marcimarc85
Goto Top

Parameter in Powershell ignorieren, wenn leer

Hi,

Ich habe ein Powershell Script, was bishe rmit einem Parameter aufgerufen wird:

.\meinScript.ps1 param1

Es muss jetzt aber noch ein Zweiter Parameter hinzu:

.\meinScript.ps1 param1 param2

Dieser ist aber nur optional, sprich, er wird nur ab und Zu beim Aufruf des Script genutzt. Wie bekomme ich es jetzt hin, dass der Paramerter einfach übersprungen wird, wenn ich ihn beim Aufruf nicht definiere?

So sieht das Ganze im Script aus:

param (
[Parameter(Mandatory=$true)][String]$param1,
[Parameter(Mandatory=$true)][String]$param2
)


Der Zweite Parameter wird innerhalb des Scriptes mit einer if-Abfrage geprüft.

if ($param2 -like 'irgendwas'){}  

Wenn jetzt halt Parameter2 beim Aufruf des Scripts nicht gesetzt wird, soll das Script ganz normal laufen wie bisher: wenn der Parameter gesetzt ist, dann soll das Script das machen, was in der if-Abfrage definiert ist.

Wenn ich den Parameter jetzt weglasse, kommt halt vom Script die Frage, was denn der zweite Parameter ist:
.\meinScript.ps1 param1
cmdlet meinScript.ps1 at command pipeline position 1
Supply values for the following parameters:
param2: 

Content-ID: 8099710061

Url: https://administrator.de/contentid/8099710061

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

7907292512
Lösung 7907292512 10.08.2023 aktualisiert um 12:59:02 Uhr
Goto Top
Zweiten Parameter optional setzen mit Mandatory=$false
param (
     [Parameter(Mandatory=$true)][String]$param1,
     [Parameter(Mandatory=$false)][String]$param2
)

Und die if Abfrage kann man dann auch hiermit machen ob Parameter 2 genutzt wurde
If ($PSBoundParameters.ContainsKey('param2')){  
    # param2 was used
}

Gruß siddius