Beim Aufruf einer Function "-InformationAction" aktivieren
Hallo.
Ich will eine Funktion schreiben bei der man über "-InformationAction Continue" eine Meldung auf dem Bildschirm aktivieren kann.
Folgenden Code habe ich zum Testen verwendet:
Wenn ich jetzt die Funktion aufrufe kann ich nicht wie gewohnt "-InformationAction Continue" eingeben, da es mir nicht vorgeschlagen wird. Auch wenn ich es einfach ins Skript schreibe erhalte ich keine Ausgabe.
Wie kann ich es aktivieren das es Beispielsweise so aufrufbar ist?
Ich will eine Funktion schreiben bei der man über "-InformationAction Continue" eine Meldung auf dem Bildschirm aktivieren kann.
Folgenden Code habe ich zum Testen verwendet:
function Show-Message
{
Write-Information "Testmessage"
}
Wenn ich jetzt die Funktion aufrufe kann ich nicht wie gewohnt "-InformationAction Continue" eingeben, da es mir nicht vorgeschlagen wird. Auch wenn ich es einfach ins Skript schreibe erhalte ich keine Ausgabe.
Wie kann ich es aktivieren das es Beispielsweise so aufrufbar ist?
Show-Message -InformationAction Continue
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7749218221
Url: https://administrator.de/forum/beim-aufruf-einer-function-informationaction-aktivieren-7749218221.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
13 Kommentare
Neuester Kommentar
Hi,
was heißt "wie gewohnt"? Nicht alle Cmdlet haben diese Option.
Das musst Du bei eigenen Funktionen schon explizit einbauen.
z.B. so:
E.
was heißt "wie gewohnt"? Nicht alle Cmdlet haben diese Option.
Das musst Du bei eigenen Funktionen schon explizit einbauen.
z.B. so:
enum ActionType {
Continue
Sonstwas
Dieses
}
function Schow-Message {
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Message,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[ActionType]$Type
)
switch ( $Type )
{
Continue {....}
Sonstwas {....}
Dieses {....}
}
Write-Host $Message
}
E.
Moin,
Dafür musst du in der Funktion das CmdletBinding-Attribut aktivieren - about_Functions_CmdletBindingAttribute
Gruß Thomas
Zitat von @HighSpeed1:
Wenn ich jetzt die Funktion aufrufe kann ich nicht wie gewohnt "-InformationAction Continue" eingeben, da es mir nicht vorgeschlagen wird. Auch wenn ich es einfach ins Skript schreibe erhalte ich keine Ausgabe.
Wie kann ich es aktivieren das es Beispielsweise so aufrufbar ist?
Wenn ich jetzt die Funktion aufrufe kann ich nicht wie gewohnt "-InformationAction Continue" eingeben, da es mir nicht vorgeschlagen wird. Auch wenn ich es einfach ins Skript schreibe erhalte ich keine Ausgabe.
Wie kann ich es aktivieren das es Beispielsweise so aufrufbar ist?
Show-Message -InformationAction Continue
Dafür musst du in der Funktion das CmdletBinding-Attribut aktivieren - about_Functions_CmdletBindingAttribute
function Show-Message
{
[CmdletBinding()]Param()
Write-Information "Testmessage"
}
Gruß Thomas
Zitat von @Cleanairs:
Hi.
Versuch mal
um die die Ausgabe der Information explizit an die Standardausgabe umzuleiten
Mit dem Aufruf
gehts dann?
Hi.
Versuch mal
function Show-Message
{
$InformationPreference = 'Continue'
Write-Output -InputObject "Testmessage"
}
Mit dem Aufruf
Show-Message -InformationAction Continue
Stimmt. noch in die Funktion oben dazugeben:
[CmdletBinding()]
param()
@HighSpeed1:
Du sollst nicht deinen Thread als Lösung markieren, sondern den Thread der zu deiner Lösung geführt hat
grüße
Du sollst nicht deinen Thread als Lösung markieren, sondern den Thread der zu deiner Lösung geführt hat
grüße
Moin,
Die InformationPreference darf man in der Funktion aber nicht einfach auf "continue" stellen.
Der Sinn von Write-Information / Write-Debug / Write-Verbose ist ja gerade, das die Meldungen nicht immer sichtbar sein sollen, sondern eben nur, wenn der User dies so wünscht.
Gruß Thomas
Die InformationPreference darf man in der Funktion aber nicht einfach auf "continue" stellen.
Der Sinn von Write-Information / Write-Debug / Write-Verbose ist ja gerade, das die Meldungen nicht immer sichtbar sein sollen, sondern eben nur, wenn der User dies so wünscht.
Gruß Thomas
Zitat von @TK1987:
Moin,
Die InformationPreference darf man in der Funktion aber nicht einfach auf "continue" stellen.
Der Sinn von Write-Information / Write-Debug / Write-Verbose ist ja gerade, das die Meldungen nicht immer sichtbar sein sollen, sondern eben nur, wenn der User dies so wünscht.
Gruß Thomas
Moin,
Die InformationPreference darf man in der Funktion aber nicht einfach auf "continue" stellen.
Der Sinn von Write-Information / Write-Debug / Write-Verbose ist ja gerade, das die Meldungen nicht immer sichtbar sein sollen, sondern eben nur, wenn der User dies so wünscht.
Gruß Thomas
ah nice danke!
Wobei das [CMDLETBinding()] aber kein muss ist um nur die Common-Parameter bei einem CMDLet zu aktivieren.
Diese aktivieren sich sobal man entweder [CMDLETBinding()] in die Funktion einsetzt oder man mindestens einen [Parameter()] Tag vor einen der Parameter setzt.
about_CommonParameters
Diese aktivieren sich sobal man entweder [CMDLETBinding()] in die Funktion einsetzt oder man mindestens einen [Parameter()] Tag vor einen der Parameter setzt.
about_CommonParameters
The common parameters are also available on advanced functions that use the CmdletBinding attribute or the Parameter attribute.
Serie: Beim Aufruf einer Function "-InformationAction" aktivieren
Beim Aufruf einer Function "-InformationAction" aktivieren13