PowerShell Übergabe von Variablen (Param)

This page is also available in English

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
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


Top-Artikel in diesem Bereich

Preview Windows PowerShell Skript erstellen und ausführen

Windows PowerShell Skript erstellen und ausführen

geändert: 06.04.2022 von Bernhard (Erstveröffentlichung: 28.11.2012)

Im einfachsten Fall ist ein PowerShell-Skript eine Textdatei mit einer Reihe von PowerShell-Befehlen. Als PowerShell Skript versteht man eine Datei mit der Endung .ps1. Die Skriptdatei kann eine Sammlung von Befehlen, Funktionen oder Cmdlets enthalten. ... weiterlesen

Preview PowerShell Loops und Array

PowerShell Loops und Array

geändert: 25.02.2022 von Bernhard (Erstveröffentlichung: 21.03.2013)

Ein Array speichert mehrere Werte, ähnlich einer 2 spaltigen Tabelle. ... weiterlesen

Preview Windows PowerShell Befehle: commands im Überblick

Windows PowerShell Befehle: commands im Überblick

geändert: 12.09.2017 von Bernhard (Erstveröffentlichung: 16.11.2011)

die verfügbaren PowerShell Befehle können mit dem Befehl: ... weiterlesen


Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
07.09.2016 14:06
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