PowerShell' Automatické proměnné ” jsou nezbytné pro správu systému, automatizaci a skriptování. Tyto proměnné jsou integrovány v běhovém prostředí PowerShellu a slouží jako zástupné symboly k ukládání a odkazování na konkrétní informace během provádění skriptu nebo příkazu. Pochopení a efektivní využití těchto automatických proměnných může výrazně zvýšit efektivitu a funkčnost skriptů PowerShellu.
Tento článek si klade za cíl prozkoumat koncept „automatických proměnných“ v PowerShellu, jejich význam a jak je lze využít v různých scénářích.
Co jsou automatické proměnné v PowerShellu?
Pro začátek se pojďme ponořit do definice „ Automatické proměnné “. Tyto proměnné jsou předdefinované a automaticky je vytváří PowerShell během provádění skriptu. Ty slouží různým účelům, včetně poskytování informací o systému, argumentů příkazového řádku, podrobností souvisejících se skripty a mnoha dalších.
PowerShell nabízí několik „automatických proměnných“ a každá z nich slouží jinému účelu při provádění skriptu. Tyto proměnné jsou následující:
1. $PSVersionTable
Jednou ze základních automatických proměnných v PowerShellu je „ $PSVersionTable “. Tato proměnná umožňuje vývojářům skriptů zjistit používanou verzi PowerShellu, což může být zásadní při zvažování kompatibility a dostupnosti určitých funkcí a funkcí.
S touto proměnnou jsou spojeny následující vlastnosti:
PSV verze: Vrátí číslo verze PowerShellu.
PS Edition: Pro PowerShell 4 a starší, stejně jako PowerShell 5.1 na plnohodnotných verzích Windows, má tato vlastnost hodnotu „Desktop“. Tato vlastnost má hodnotu Core pro PowerShell 6 a novější, stejně jako Windows PowerShell 5.1 pro edice s nízkými nároky, jako je Windows Nano Server nebo Windows IoT.
GitCommitId: Načte ID odevzdání GitHub zdrojových souborů.
VY: Zaznamenává informace o počítačovém systému, který PowerShell používá.
Plošina: Vrátí podpůrnou platformu operačního systému. Unix má hodnotu pro Linux a macOS. Podívejte se na $IsMacOs a $IsLinux.
PSCompatibleVersions: Vrátí se verze PowerShellu, které jsou kompatibilní s aktuální verzí.
PSRemotingProtocolVersion: Vrátí číslo verze pro protokol vzdálené správy PowerShell.
Serializační verze: Vrátí verzi metody serializace.
WSManStackVersion: Vrátí číslo verze zásobníku WS-Management.
$ Tabulka PSVverzí
2. $Args
Další zásadní automatickou proměnnou v PowerShellu je „ $Args “, která obsahuje pole argumentů příkazového řádku předávaných skriptu nebo funkci. Tato proměnná umožňuje vývojářům dynamicky zpracovávat a manipulovat s poskytnutými argumenty v rámci jejich skriptů.
Při definování funkce můžete buď použít klíčové slovo „param“ k deklaraci parametrů, nebo můžete přidat seznam parametrů oddělených čárkami v závorkách za názvem funkce. Proměnná akce události „$Args“ ukládá objekty, které slouží jako zástupné symboly pro parametry události zpracovávané události:
pro každého ( $arg v $Args ) {Write-Host $arg
}
3. $MyInvocation
' $MyInvocation ” proměnná poskytuje zásadní podkladová data o skriptu nebo proceduře, která právě běží. Nabízí vlastnosti, jako je název skriptu, číslo řádku skriptu a zda je skript spouštěn interaktivně nebo neinteraktivně. Tyto vlastnosti pomáhají vývojářům skriptů implementovat logiku větvení, definovat mechanismy pro řešení chyb nebo generovat smysluplné protokolování a hlášení:
$ MyInvocation
4. $Error
Méně známá automatická proměnná „ $Error “, efektivně zachycuje všechny chybové zprávy nebo výjimky, které se vyskytnou během provádění skriptu. „$Error“ je přístupný pro získání konkrétních podrobností o chybách, jako jsou zprávy o výjimkách, trasování zásobníku nebo chybové kódy, což umožňuje podrobnou analýzu a ladění.
Nejnovější chyba je reprezentována prvním chybovým objektem v poli “ $Error[0] “. Můžete použít společnou možnost ErrorAction s hodnotou „Ignore“ k zastavení přidávání chyb do pole „$Error“.
Předpokládejme, že jsme zadali přesný příkaz:
ip [ onfig
Nyní, když zadáme rutinu „$Error“:
$ Chyba
5. $PSCmdlet
Při práci s moduly PowerShell se automatická proměnná „ $PSCmdlet “ vstoupí v platnost. Tato proměnná poskytuje přístup k aktuální instanci rutiny nebo funkce, která se vyvolává, a usnadňuje přímou interakci s jejími vlastnostmi a metodami.
Pomocí „$PSCmdlet“ mohou pokročilí vývojáři skriptů doladit a zlepšit chování modulů rozšířením nebo úpravou vestavěných funkcí. Atributy a metody objektu můžete použít ve své rutině nebo kódu funkce v reakci na kritéria použití:
funkce typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
echo 'typ ' $psCmdlet je $($psCmdlet.GetType() .Celé jméno)'
}
typeof-psCmdlet
Kromě výše uvedených proměnných zahrnuje PowerShell automatické proměnné jako $HOME, $PROFILE, $PWD a mnoho dalších, které slouží k různým účelům, jako je přístup ke vstupu, sledování chyb, získávání informací o prostředí, správa parametrů a mnoho dalšího. Tyto proměnné jsou uvedeny níže:
Automatické proměnné | Popis |
$$ | Obsahuje poslední token v předchozím řádku přijatý relací PowerShellu. |
$? | Ukládá stav provedení posledního příkazu. |
$^ | Obsahuje první token posledního řádku přijatého relací. |
$_ | Představuje aktuální objekt v potrubí. |
$ConsoleFileName | Obsahuje cestu k souboru konzoly (.psc1), který byl naposledy použit v relaci. |
$EnabledExperimentalFeatures | Obsahuje seznam povolených experimentálních funkcí. |
$Událost | Obsahuje objekt „PSEventArgs“ představující zpracovávanou událost. |
$EventArgs | Obsahuje první argument události zpracovávané události. |
$EventSubscriber | Představuje účastníka události zpracovávané události. |
$ExecutionContext | Představuje kontext provádění hostitele PowerShellu. |
$false | Představuje booleovskou hodnotu „False“. |
$foreach | Obsahuje enumerátor smyčky „pro každého“. |
$HOME | Obsahuje úplnou cestu domovského adresáře uživatele. |
$Host | Představuje aktuální hostitelskou aplikaci pro PowerShell. |
$vstup | Slouží jako enumerátor pro veškerý vstup předaný funkci nebo skriptu. |
$IsCoreCLR | Označuje, zda relace běží na .NET Core Runtime (CoreCLR). |
$IsLinux | Označuje, zda relace běží na operačním systému Linux. |
$IsMacOS | Označuje, zda relace běží na operačním systému MacOS. |
$IsWindows | Identifikuje, zda je relace spuštěna v operačním systému Windows. |
$LASTEXITCODE | Ukládá ukončovací kód posledního nativního programu nebo skriptu PowerShellu. |
$Zápasy | Obsahuje odpovídající řetězce z operátorů „-match“ a „-notmatch“. |
$NestedPromptLevel | Sleduje aktuální úroveň výzvy ve vnořených příkazech nebo scénářích ladění. |
$null | Představuje prázdnou nebo prázdnou hodnotu. |
$ PID | Obsahuje identifikátor procesu (PID) relace PowerShellu. |
$PROFIL | Obsahuje úplnou cestu k profilu PowerShell pro aktuálního uživatele a hostitelskou aplikaci. |
$PSBoundParameters | Obsahuje slovník parametrů předávaných skriptu nebo funkci a jejich hodnoty. |
$PSCommandPath | Obsahuje úplnou cestu a název spouštěného skriptu. |
$PSCulture | Odráží kulturu aktuálního běhového prostoru PowerShellu. |
$PS Edition | Obsahuje informace o vydání PowerShell. |
$PSHOME | Obsahuje úplnou cestu k instalačnímu adresáři PowerShellu. |
$PSItem | Stejně jako $_, představuje aktuální objekt v kanálu. |
$PSScriptRoot | Obsahuje úplnou cestu k nadřazenému adresáři spouštěného skriptu. |
$PSSenderInfo | Obsahuje informace o uživateli, který spustil PSSession. |
$PSUICkultura | Odráží kulturu uživatelského rozhraní (UI) nakonfigurovanou v operačním systému. |
$PWD | Představuje aktuální pracovní adresář relace PowerShellu. |
$Sender | Obsahuje objekt, který vygeneroval událost. |
$ShellId | Obsahuje identifikátor aktuálního shellu. |
$StackTrace | Ukládá trasování zásobníku pro nejnovější chybu. |
$spínač | Obsahuje enumerátor příkazu „Switch“. |
$toto | Odkazuje na instanci třídy v blocích skriptu, které rozšiřují třídy. |
$pravda | Představuje booleovskou hodnotu „True“. |
Všechny „automatické proměnné“ v PowerShellu lze najít spuštěním následujícího příkazu:
Get-Variable
Závěr
“ Automatické proměnné ” tvoří páteř skriptování PowerShell, která vývojářům umožňuje získat informace o systému, argumenty příkazového řádku, kontext provádění skriptu a další. Využitím automatických proměnných, jako jsou „$PSVersionTable“, „$Args“, „$MyInvocation“, „$Error“ a další, mohou vývojáři skriptů PowerShell vytvářet zjednodušené postupy správy systému.