about_Variables
Krátký popis
Popisuje, jak proměnné ukládají hodnoty, které je možné použít v PowerShellu.
Dlouhý popis
Všechny typy hodnot můžete ukládat do proměnných PowerShellu. Například uložte výsledky příkazů a ukládejte prvky, které se používají v příkazech a výrazech, jako jsou názvy, cesty, nastavení a hodnoty.
Proměnná je jednotka paměti, ve které jsou uloženy hodnoty. V PowerShellu jsou proměnné reprezentovány textovými řetězci, které začínají znakem dolaru (), například $a
, nebo $my_var
$process
.$
U názvů proměnných se nerozlišuje malá a velká písmena a můžou obsahovat mezery a speciální znaky. Názvy proměnných, které obsahují speciální znaky a mezery, se ale obtížně používají a měly by se jim vyhnout. Další informace naleznete v tématu Názvy proměnných, které obsahují speciální znaky.
PowerShell obsahuje několik různých typů proměnných.
Uživatelem vytvořené proměnné: Uživatelem vytvořené proměnné se vytvářejí a spravují uživatelem. Ve výchozím nastavení existují proměnné, které vytvoříte na příkazovém řádku PowerShellu, jenom když je otevřené okno PowerShellu. Po zavření oken PowerShellu se proměnné odstraní. Pokud chcete proměnnou uložit, přidejte ji do profilu PowerShellu. Proměnné můžete vytvářet také ve skriptech s globálním oborem, skriptem nebo místním oborem.
Automatické proměnné: Automatické proměnné ukládají stav PowerShellu. Tyto proměnné se vytvářejí v PowerShellu a PowerShell změní jejich hodnoty podle potřeby, aby se zachovala jejich přesnost. Uživatelé nemohou změnit hodnotu těchto proměnných. Proměnná například
$PSHOME
ukládá cestu k instalačnímu adresáři PowerShellu.Další informace, seznam a popis automatických proměnných najdete v tématu about_Automatic_Variables.
Proměnné předvoleb: Proměnné předvoleb ukládají uživatelské předvolby pro PowerShell. Tyto proměnné se vytvářejí pomocí PowerShellu a naplní se výchozími hodnotami. Uživatelé můžou změnit hodnoty těchto proměnných. Proměnná
$MaximumHistoryCount
například určuje maximální počet položek v historii relace.Další informace, seznam a popis proměnných předvoleb najdete v about_Preference_Variables.
Práce s proměnnými
Pokud chcete vytvořit novou proměnnou, použijte příkaz přiřazení k přiřazení hodnoty proměnné. Před použitím proměnné nemusíte deklarovat proměnnou. Výchozí hodnota všech proměnných je $null
.
Pokud chcete získat seznam všech proměnných v relaci PowerShellu, zadejte Get-Variable
. Názvy proměnných se zobrazí bez předchozího znaku dolaru ($
), který se používá k odkazování na proměnné.
Příklad:
$MyVariable = 1, 2, 3
$Path = "C:\Windows\System32"
Proměnné jsou užitečné pro ukládání výsledků příkazů.
Příklad:
$Processes = Get-Process
$Today = (Get-Date).DateTime
Pokud chcete zobrazit hodnotu proměnné, zadejte název proměnné před znakem dolaru ($
).
Příklad:
$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46
Pokud chcete změnit hodnotu proměnné, přiřaďte proměnné novou hodnotu.
Následující příklady zobrazují hodnotu $MyVariable
proměnné, změní hodnotu proměnné a pak zobrazí novou hodnotu.
$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.
Pokud chcete odstranit hodnotu proměnné, použijte rutinu Clear-Variable
nebo změňte hodnotu na $null
.
Clear-Variable -Name MyVariable
$MyVariable = $null
Pokud chcete proměnnou odstranit, použijte remove-variable nebo Remove-Item.
Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable
Pomocí jednoho příkazu je také možné přiřadit hodnoty více proměnným. Následující příklady přiřadí stejnou hodnotu více proměnným:
$a = $b = $c = 0
Další příklad přiřadí více hodnot více proměnným.
$i,$j,$k = 10, "red", $true # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true # $i is 10, $j is [object[]], Length 2
Podrobnější informace najdete v části Přiřazení více proměnných about_Assignment_Operators.
Typy proměnných
Do proměnné můžete uložit libovolný typ objektu, včetně celých čísel, řetězců, polí a tabulek hash. A objekty, které představují procesy, služby, protokoly událostí a počítače.
Proměnné PowerShellu jsou volně napsané, což znamená, že nejsou omezené na konkrétní typ objektu. Jedna proměnná může dokonce obsahovat kolekci nebo pole různých typů objektů současně.
Datový typ proměnné je určen typy .NET hodnot proměnné. Chcete-li zobrazit typ objektu proměnné, použijte Get-Member.
Příklad:
$a = 12 # System.Int32
$a = "Word" # System.String
$a = 12, "Word" # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows # FileInfo and DirectoryInfo types
Pomocí atributu typu a zápisu přetypování můžete zajistit, aby proměnná obsahovala pouze konkrétní typy objektů nebo objekty, které lze převést na tento typ. Pokud se pokusíte přiřadit hodnotu jiného typu, PowerShell se pokusí hodnotu převést na jeho typ. Pokud typ nelze převést, příkaz přiřazení selže.
Pokud chcete použít zápis přetypování, zadejte název typu uzavřený v hranatých závorkách před název proměnné (na levé straně příkazu přiřazení). Následující příklad vytvoří proměnnou $number
, která může obsahovat pouze celá čísla, proměnnou $words
, která může obsahovat pouze řetězce a proměnnou $dates
, která může obsahovat pouze objekty DateTime .
[int]$number = 8
$number = "12345" # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [],
ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2 # The integer is converted to a string.
$words += 10 # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91" # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10 # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00
Použití proměnných v příkazech a výrazech
Chcete-li použít proměnnou v příkazu nebo výrazu, zadejte název proměnné před znakem dolaru ($
).
Pokud název proměnné a znak dolaru nejsou uzavřeny do uvozovek nebo pokud jsou uzavřeny do dvojitých uvozovek ("
), použije se hodnota proměnné v příkazu nebo výrazu.
Pokud je název proměnné a znak dolaru uzavřeny do jednoduchých uvozovek ('
), použije se název proměnné ve výrazu.
Další informace o použití uvozovek v PowerShellu najdete v tématu about_Quoting_Rules.
Tento příklad získá hodnotu $PROFILE
proměnné, což je cesta k souboru profilu uživatele PowerShellu v konzole PowerShellu.
$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
V tomto příkladu se zobrazí dva příkazy, které můžou otevřít profil PowerShellu v notepad.exe. Příklad s dvojitými uvozovkami ("
) používá hodnotu proměnné.
notepad $PROFILE
notepad "$PROFILE"
Následující příklady používají značky jednoduchých uvozovek,'
které považují proměnnou za text literálu.
'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.
Názvy proměnných, které obsahují speciální znaky
Názvy proměnných začínají znakem dolaru ($
) a mohou obsahovat alfanumerické znaky a speciální znaky. Délka názvu proměnné je omezená pouze dostupnou pamětí.
Osvědčeným postupem je, že názvy proměnných obsahují pouze alfanumerické znaky a znak podtržítka (_
). Názvy proměnných, které obsahují mezery a další speciální znaky, se obtížně používají a měly by se jim vyhnout.
Názvy alfanumerických proměnných můžou obsahovat tyto znaky:
- Znaky Unicode z těchto kategorií: Lu, Ll, Lt, Lm, Lo nebo Nd.
- Znak podtržítka (
_
) - Znak otazníku (
?
).
Následující seznam obsahuje popisy kategorií Unicode. Další informace naleznete v tématu UnicodeCategory.
- Lu - Velká písmena
- Ll – Malá písmenaLetter
- Lt – TitlecaseLetter
- Lm – ModifikátorLetter
- Lo - OtherLetter
- Nd – DecimalDigitNumber
Chcete-li vytvořit nebo zobrazit název proměnné, která obsahuje mezery nebo speciální znaky, uzavřete název proměnné se znaky složených závorek ({}
).
Složené závorky směrují PowerShell, aby interpretovat znaky názvu proměnné jako literály.
Názvy speciálních proměnných znaků můžou obsahovat tyto znaky:
- Libovolný znak Unicode s následujícími výjimkami:
- Pravá složená závorka (
}
) znak (U+007D). - Znak backtick () (
`
U+0060). Zpětné znaky se používají k řídicímu znaku Unicode, takže se považují za literály.
- Pravá složená závorka (
PowerShell obsahuje rezervované proměnné, například $$
, $?
, $^
a $_
které obsahují alfanumerické a speciální znaky. Další informace najdete v tématu about_Automatic_Variables.
Například následující příkaz vytvoří proměnnou s názvem save-items
. Složené závorky ({}
) jsou potřeba, protože název proměnné obsahuje speciální znak spojovníku (-
).
${save-items} = "a", "b", "c"
${save-items}
a
b
c
Následující příkaz získá podřízené položky v adresáři, který je reprezentován proměnnou ProgramFiles(x86)
prostředí.
Get-ChildItem ${env:ProgramFiles(x86)}
Pokud chcete odkazovat na název proměnné, který obsahuje složené závorky, uzavřete název proměnné do složených závorek a pomocí znaku backtick uvozujte závorky. Pokud chcete například vytvořit pojmenovaný this{value}is
typ proměnné:
${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.
Proměnné a obor
Ve výchozím nastavení jsou proměnné dostupné pouze v oboru, ve kterém se vytvářejí.
Například proměnná, kterou vytvoříte ve funkci, je k dispozici pouze v rámci funkce. Proměnná, kterou vytvoříte ve skriptu, je k dispozici pouze v rámci skriptu. Pokud skript dot-source, proměnná se přidá do aktuálního oboru. Další informace najdete v tématu about_Scopes.
Modifikátor oboru můžete použít ke změně výchozího rozsahu proměnné. Následující výraz vytvoří proměnnou s názvem Computers
. Proměnná má globální obor, i když je vytvořená ve skriptu nebo funkci.
$Global:Computers = "Server01"
Pro každý skript nebo příkaz, který se spustí mimo relaci, potřebujete Using
modifikátor oboru pro vložení hodnot proměnných z oboru volající relace, aby k nim mohl přistupovat kód mimo relaci.
Další informace najdete v tématu about_Remote_Variables.
Ukládání proměnných
Proměnné, které vytvoříte, jsou k dispozici pouze v relaci, ve které je vytvoříte. Když relaci zavřete, ztratí se.
Pokud chcete vytvořit proměnnou v každé relaci PowerShellu, kterou spustíte, přidejte tuto proměnnou do profilu PowerShellu.
Pokud například chcete změnit hodnotu $VerbosePreference
proměnné v každé relaci PowerShellu, přidejte do profilu PowerShellu následující příkaz.
$VerbosePreference = "Continue"
Tento příkaz můžete přidat do profilu PowerShellu tak, že soubor otevřete $PROFILE
v textovém editoru, například notepad.exe. Další informace o profilech PowerShellu najdete v tématu about_Profiles.
Proměnná: jednotka
Zprostředkovatel proměnné PowerShellu vytvoří jednotku Variable:
, která vypadá a funguje jako jednotka systému souborů, ale obsahuje proměnné ve vaší relaci a jejich hodnoty.
Pokud chcete přejít na jednotku Variable:
, použijte následující příkaz:
Set-Location Variable:
Pokud chcete zobrazit seznam položek a proměnných na Variable:
jednotce, použijte rutiny Get-Item
Get-ChildItem
.
Get-ChildItem Variable:
Pokud chcete získat hodnotu konkrétní proměnné, zadejte název jednotky a název proměnné pomocí zápisu systému souborů. Pokud chcete například získat automatickou $PSCulture
proměnnou, použijte následující příkaz.
Get-Item Variable:\PSCulture
Name Value
---- -----
PSCulture en-US
Pokud chcete zobrazit další informace o Variable:
jednotce a zprostředkovateli proměnné PowerShellu, zadejte:
Get-Help Variable
Syntaxe proměnných s cestami zprostředkovatele
Cestu zprostředkovatele můžete předponovat znakem dolaru ($
) a přistupovat k obsahu libovolného zprostředkovatele, který implementuje IContentCmdletProvider rozhraní.
Tento zápis podporují následující integrovaní poskytovatelé PowerShellu:
Rutiny proměnných
PowerShell obsahuje sadu rutin, které jsou navržené pro správu proměnných.
Pokud chcete zobrazit seznam rutin, zadejte:
Get-Command -Noun Variable
Pokud chcete získat nápovědu pro konkrétní rutinu, zadejte:
Get-Help <cmdlet-name>
Název rutiny | Popis |
---|---|
Clear-Variable |
Odstraní hodnotu proměnné. |
Get-Variable |
Získá proměnné v aktuální konzole. |
New-Variable |
Vytvoří novou proměnnou. |
Remove-Variable |
Odstraní proměnnou a její hodnotu. |
Set-Variable |
Změní hodnotu proměnné. |