Overfør parametre til et Windows PowerShell-script

Fuldført

Du kan konfigurere dine scripts til at acceptere parametre på samme måde som cmdlet'er. Dette er en god metode for brugerne til at angive input, fordi det er i overensstemmelse med den måde, brugerne leverer input til cmdlet'er på. Konsistensen gør det nemmere for brugerne at forstå.

Hvis du vil identificere de variabler, der gemmer parameterværdier, skal du bruge en Param() blok. Variabelnavnene er defineret mellem parenteserne. Syntaksen for brug af en Param() blok er:

Param(
   [string]$ComputerName ,
   [int]$EventID
)

De variabelnavne, der er defineret i Param() blok, er også navnene på parametrene. I det forrige eksempel indeholder det script, der indeholder denne Param() blok, parametrene -ComputerName og -EventID parametre, der kan bruges. Når du angiver parameternavnene for scriptet, kan du bruge tabulatorfuldførelse på samme måde som for cmdlet-parametre. Syntaksen for kørsel af et script med parametre er:

.\GetEvent.ps1 -ComputerName LON-DC1 -EventID 5772

Seddel

Parametre er som standard positionelle. Hvis parameternavnene ikke er angivet, overføres parameterværdierne til parametrene i rækkefølge. Den første værdi efter scriptnavnet placeres f.eks. i den første parametervariabel.

Seddel

Hvis du ikke placerer en Param() blok i scriptet, kan du stadig overføre data til scriptet ved hjælp af ikke-navngivne parametre. De værdier, der er angivet efter scriptnavnet, er tilgængelige i scriptet i matrixen $args.

Definition af variabeltyper

Det er bedste praksis at definere variabeltyper i en Param() blok. Når du definerer variabeltyperne, genereres der en fejl, hvis en bruger angiver en værdi, der ikke kan konverteres til den pågældende variabeltype. Dette er én metode, som du kan bruge til at validere de data, som brugerne angiver.

Du kan bruge variabeltypen Switch til en parameter, når der er en indstilling, du vil være til eller fra. Når scriptet køres, angiver parameterens tilstedeværelse variablen til $true. Hvis parameteren ikke findes, er værdien for en variabel $false. I et script, der typisk viser nogle statusoplysninger til brugerne, kan du f.eks. oprette en -quiet parameter, der undertrykker alt output på skærmen.

En switchvariabel foretrækkes generelt frem for en boolesk variabel for parametre, fordi syntaksen for brugerne er enklere. Brugerne behøver ikke at inkludere en $true eller $false værdi.

Standardværdier

Du kan definere standardværdier for parametre i Param() blok. De standardværdier, du definerer, bruges kun, hvis brugeren ikke angiver en værdi for parameteren. Dette sikrer, at alle nødvendige parametre har en værdi.

I følgende eksempel beskrives det, hvordan du angiver en standardværdi:

Param(
   [string]$ComputerName = "LON-DC1"
)

Anmoder om brugerinput

Du kan også bede om input, hvis brugeren ikke angiver en parameterværdi. Dette sikrer, at brugeren angiver en værdi for en parameter, når der ikke er en logisk standardværdi, som du kan angive.

I følgende eksempel beskrives det, hvordan brugerne bliver bedt om at angive input:

Param(
   [int]$EventID = Read-Host "Enter event ID"
)

Seddel

Du kan konfigurere yderligere avancerede indstillinger for parametre i et script, f.eks. gøre en parameter obligatorisk, ved hjælp af attributten Parameter() i Param() blok.

Yderligere læsning: Du kan finde flere oplysninger om attributten Parameter() i about_Functions_Advanced_Parameters.