Jak Vytvořit Funkce v prostředí PowerShell

Funkce jsou běžným jevem v prostředí PowerShell a opravdu pochopit PowerShell jazyk, je důležité, že víte, jak funguje. V tomto článku ukážeme, jak se funkce PowerShell vyvíjí v podstatě od ničeho až po parametry používající atributy ověření.

abychom to dokázali, začněme nejprve funkcí, která nemůže být jednodušší.

function Write-Log {

param()
}

při spuštění uvnitř relace PowerShell se tato funkce spustí, ale neudělá nic, protože neexistuje žádný kód k provedení. PowerShell jednoduše provede samotnou funkci a vrátí se.

aby funkce skutečně něco udělala, musíme přidat nějaký kód. Kód je přidán mezi blok param a poslední složenou ortézu. Níže vidíte, že dělám svou funkci zápisu a vracím řetězec „něco jsem udělal“ do konzoly.

function Write-Log {

param()
'I did something'
}
PS> Write-Log
I did something

Naše funkce se nazývá Zápis-Protokol, takže předpokládám, že to bude funkce, která bude nakonec napsat nějaký text do souboru protokolu. Protože nebudeme chtít psát totéž do souboru protokolu pokaždé, musíme poskytnout nějaký způsob, jak změnit zprávu při spuštění funkce. K tomu přidáme parametr. Parametry umožňují uživateli předávat různé hodnoty do funkce za běhu. To umožňuje funkci shromažďovat dynamický vstup za běhu.

Chcete – li přidat parametr, přidám proměnnou. V tomto případě se proměnná nazývá zpráva. Přidám to uvnitř bloku param, jak je uvedeno níže. Pak můžete vidět, že mohu odkazovat na tento parametr uvnitř samotné funkce. Při spuštění funkce vrátí jakoukoli hodnotu, kterou předám parametru zprávy.

function Write-Log {

param($Message)
$Message
}
PS> Write-Log -Message 'I did something'
I did something

nemusíte zastavovat pouze u jednoho parametru. Můžeme jich přidat tolik, kolik chceme. Níže přidávám parametr závažnosti, který poskytuje hodnotu při spuštění funkce a můžete vidět, že vykazuje stejné chování.

function Write-Log {

param($Message, $Severity)
"$Message - Severity: $Severity"
}
Write-Log -Message 'I did something' -Severity 1

Nyní, když víme, jak zacházet s parametry, můžeme se dostat do typů parametrů. Parametr má typ stejně jako cokoli jiného v PowerShell. Výše, používal typ, ale přijímal jakýkoli druh předmětu, který si lze představit. Parametr nebyl explicitně zadán. Je dobré to udělat na všech parametrech, abyste zajistili, že budou předány pouze hodnoty, které očekáváte.

pro definování typu můžeme přidat Typ do hranatých závorek těsně před deklarováním parametru.

function Write-Log {

param($Message)
$Message
}

jakmile je parametru přiřazen explicitní typ, PowerShell přijme pouze vstup tohoto typu nebo objektu, který může převést. V tomto příkladu níže předávám booleovskou hodnotu $false parametru zprávy. Vidíte, že PowerShell to nedovolí. Je to proto, že nemůže převést booleovský typ na typ ServiceController.

ps1

Pokud však předáme objekt ServiceController, který se vrací Get-Service, funguje to dobře.

PS> Write-Log -Message $service
Status Name DisplayName
------ ---- -----------
Stopped AdtAgent Microsoft Monitoring Agent Audit Fo...

můžeme také použít atributy parametrů. Atributy parametrů nám umožňují definovat různé vlastnosti každého parametru, který určuje, jak to funguje. V níže uvedeném příkladu používám povinný parametr. Tyto atributy nutí uživatele předat hodnotu parametru zprávy, jinak se funkce nespustí.

také nastavuji výchozí hodnotu parametru závažnosti. To mi umožňuje vynutit, aby závažnost byla vždy 1, pokud není přepsána v době běhu předáním hodnoty tomuto parametru.

function Write-Log {

param(

$Message,

$Severity = 1
)
"$Message - Severity: $Severity"
}

nakonec můžeme použít atributy ověření parametrů. Atributy ověření parametrů jsou skvělý způsob, jak omezit, jaké hodnoty jsou předávány parametru. V níže uvedeném příkladu používám atribut ValidateRange() validation. Tento atribut se používá na parametrech typu integer k definování rozsahu povolených čísel. V tomto příkladu povoluji pouze hodnoty závažnosti 1-5. Jakákoli jiná hodnota, která není v tomto rozsahu, selže.

function Write-Log {

param(

$Message,


$Severity
)
"$Message - Severity: $Severity"
}

zabalte

Nyní byste měli mít základní znalosti o tom, jak funkce fungují v PowerShell. Pokryli jsme vše, co potřebujete vědět, abyste mohli začít budovat užitečné funkce v PowerShell. Doporučuji vám, abyste si ve svých skriptech začali všímat časů, kdy by byla funkce užitečná, a začali je budovat. Postupem času uvidíte, že váš kód bude čistší a mnohem snáze čitelný.

Related Posts

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *