PowerShell Übergabe von Variablen an ein Skript (Param)
Zu Beginn eines PowerShell Scripts können Parameter in der Funktion Param() definiert werden.
Param - Übergabe von Variablen an ein Skript
Variablen innerhalb von "param"
können beim Aufruf des Skripts an das Skript übergeben werden.
param (
[String]$var1="1",
[String]$var2="2"
)
Datentypen
Welche Dateitypen als Parameter zugelassen sind, wird mit [Datentyp]$Variablenname
definiert. Eine Liste der möglichen Datentypen gibt es hier: PowerShell Variablen und Datentypen
Wird als Datentyp "switch" verwendet, müssen für die Parameter keine Werte angegeben werden:
CmdletBinding
Mit dem Zustatz [CmdletBinding()]
werden PowerShell Skripts oder Funktionen in cmdlets umgewandelt. PowerShell hängt an die Funktion dadurch noch zusätzliche Parameter an:
Powershell ISE bietet dazu eine Snippet-Vorlage: cmdlet (advanced function), siehe auch: Powershell ISE - Snippet
Mandatory
Variablen mit dem Zusatz Mandatory werden für das Ausführen zwingend benötigt
Parameter mit mehreren Werten
Durch das Trennen der Werte mit einem Komma "," können mehrere Variablen übergeben werden. Diese können in einer Foreach-Schleife behandelt werden
function folders
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true)]
$Folders=(
"d:",
"e:",
"c:")
)
foreach ($Folder in $Folders){
write-host "folder:$($Folder)"
}
}
Aufruf:
PS c:\> folders -folders "c:\temp","c:\test2"folder:c:\tempfolder:c:\test2
Parameter ohne Wert: switch
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false)]
[switch]$Option,
[Parameter(Mandatory=$false)]
[switch]$2ndOption
)
write-host $Option
write-host $2ndOption
Beim Aufruf ohne Parameter, werden die beiden optionalen Parameter mit $false zurückgegeben:
PS C:\temp> .\parameter.ps1
False
False
PS C:\temp>
werden die Optionen beim Aufruf angegeben, wird der Switch Parameter auf $true gesetzt:
PS C:\temp> .\parameter.ps1 -Option
True
False
PS C:\temp>
Auslesen der möglichen Parameter
PS C:\temp> (get-command .\parameter.ps1).parameters
Key Value
--- -----
Option System.Management.Automation.ParameterMetadata
2ndOption System.Management.Automation.ParameterMetadata
Verbose System.Management.Automation.ParameterMetadata
Debug System.Management.Automation.ParameterMetadata
ErrorAction System.Management.Automation.ParameterMetadata
WarningAction System.Management.Automation.ParameterMetadata
InformationAction System.Management.Automation.ParameterMetadata
ErrorVariable System.Management.Automation.ParameterMetadata
WarningVariable System.Management.Automation.ParameterMetadata
InformationVariable System.Management.Automation.ParameterMetadata
OutVariable System.Management.Automation.ParameterMetadata
OutBuffer System.Management.Automation.ParameterMetadata
PipelineVariable System.Management.Automation.ParameterMetadata
{{percentage}} % positiv
DANKE für deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
User: Peter Beispiel "Parameter ohne Wert: Switch" funktioniert nicht, wenn man "-2ndOption" wählt. So wie es aussieht macht die Zahl "2" ein Problem Bei mir hat es nur so funktioniert: [CmdletBinding()] Param( [Parameter(Mandatory=$false)] [switch]$Option, [Parameter(Mandatory=$false)] [switch]$zweiteOption ) write-host $Option write-host $zweiteOption