Krausmueller.de

PowerShell Scripte mit WhatIf

Manchmal ist es sinnvoll den Aufruf eines eigenen PowerShell Scripts nur zu simulieren. Statt die Aktionen wirklich auszuführen möchte man lediglich sehen was passieren würde. Viele Cmdlets unterstützen den Parameter -WhatIf. Benutzt man diesen z.B. beim Anlegen eines Verzeichnis wird dieses nicht erstellt, sondern lediglich die im Beispiel angezeigte Meldung ausgegeben:

1
New-Item -ItemType Directory -Name "test" -Path "c:\temp" -WhatIf
PS C:\> New-Item -ItemType Directory -Name "test" -Path "c:\temp" -WhatIf
What if: Performing the operation "Create Directory" on target "Destination: C:\temp\test".

Weiterlesen →

Passwörter in PowerShell

Bei verschiedenen Gelegenheiten kann es vorkommen, dass man Passwörter in Powershell verwenden muss. Soll z.B. ein anderer Rechner heruntergefahren und für die Authentifizierung ein anderer als der aktuell angemeldete Benutzer verwendet werden, müssen Benutzername und Passwort angegeben werden. Diese können mit Get-Credential zur Laufzeit abgefragt werden:

1
2
$Credential = Get-Credential
Stop-Computer -Computer 192.168.2.10 -Credential $Credential -WhatIf

Weiterlesen →

PowerShell Parameter auf gültige Werte prüfen

Bei der Übergabe von Parametern möchte man diese evtl. auf gültige Werte einschränken. Natürlich kann diese Überprüfung selbst mit if-Anweisungen erledigt werden. Gültige Werte können aber auch schon bei der Definition der Parameter vorgegeben werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Definition der Parameter
Param(
    [Parameter(Mandatory=$True)]
    [string]$StringParameter1,

    [Parameter(Mandatory=$True)]
    [ValidateSet("String1","String2")]
    [string]$StringParameter2,

    [Parameter(Mandatory=$True)]
    [int]$IntegerParameter1,

    [Parameter(Mandatory=$True)]
    [ValidateRange(0, 5)]
    [int]$IntegerParameter2
)

# eigene Überprüfung der Parameter
if (-not($StringParameter1 -eq "String1" -or $StringParameter1 -eq "String2")) {
    Write-Output "Fehler! Gültige Werte für StringParameter1 sind ""String1"" und ""String2""."
    exit
}
if ($IntegerParameter1 -lt 0 -or $IntegerParameter1 -gt 5) {
    Write-Output "Fehler! Wert für IntegerParameter1 muss im Bereich 0 bis 5 liegen."
    exit
}

# Ausgabe der Parameter
Write-Output "StringParameter1: $StringParameter1"
Write-Output "StringParameter2: $StringParameter2"
Write-Output "IntegerParameter1: $IntegerParameter1"
Write-Output "IntegerParameter2: $IntegerParameter2"

Weiterlesen →

Parameter an PowerShell Script übergeben

Um einem PowerShell Script Parameter übergeben zu können müssen diese vorher definiert werden. Dabei legt man auch den Datentyp des Parameters fest. Ein kleines Beispiel verdeutlicht es denke ich am besten:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Definition der Parameter
Param(
    [string]$StringParameter,
    [bool]$BooleanParameter = $False,
    [int]$IntegerParameter = 10,
    [switch]$SwitchParameter
)

# Ausgabe der Parameter
Write-host "StringParameter: $StringParameter"
Write-host "BooleanParameter: $BooleanParameter"
Write-host "IntegerParameter: $IntegerParameter"
Write-host "SwitchParameter: $SwitchParameter"

Weiterlesen →