about_Variables
Rövid leírás
Ismerteti, hogy a változók hogyan tárolják a PowerShellben használható értékeket.
Hosszú leírás
Minden típusú értéket tárolhat PowerShell-változókban. Tárolja például a parancsok eredményeit, és tárolja a parancsokban és kifejezésekben használt elemeket, például neveket, elérési utakat, beállításokat és értékeket.
A változó a memória egysége, amelyben az értékek tárolódnak. A PowerShellben a változókat dollárjellel ($
) kezdődő szöveges sztringek jelölik, például $a
: , $process
vagy $my_var
.
A változónevek nem megkülönböztetik a kis- és nagybetűket, és szóközöket és speciális karaktereket is tartalmazhatnak. A speciális karaktereket és szóközöket tartalmazó változóneveket azonban nehéz használni, ezért kerülni kell őket. További információ: Speciális karaktereket tartalmazó változónevek.
A PowerShellben számos különböző változótípus létezik.
Felhasználó által létrehozott változók: A felhasználó által létrehozott változókat a felhasználó hozza létre és tartja karban. Alapértelmezés szerint a PowerShell parancssorában létrehozott változók csak a PowerShell-ablak megnyitásakor léteznek. A PowerShell-ablakok bezárásakor a változók törlődnek. Egy változó mentéséhez adja hozzá a PowerShell-profiljához. Változókat globális, szkriptes vagy helyi hatókörű szkriptekben is létrehozhat.
Automatikus változók: Az automatikus változók a PowerShell állapotát tárolják. Ezeket a változókat a PowerShell hozza létre, és a PowerShell a pontosság fenntartása érdekében szükség szerint módosítja az értékeket. A felhasználók nem módosíthatják ezeknek a változóknak az értékét. A változó például
$PSHOME
a PowerShell telepítési könyvtárának elérési útját tárolja.További információ, az automatikus változók listája és leírása: about_Automatic_Variables.
Beállításváltozók: A beállítási változók a PowerShell felhasználói beállításait tárolják. Ezeket a változókat a PowerShell hozza létre, és alapértelmezett értékekkel tölti fel őket. A felhasználók módosíthatják ezeknek a változóknak az értékeit. A változó például
$MaximumHistoryCount
meghatározza a munkamenetelőzmények bejegyzéseinek maximális számát.További információ, lista és a beállításváltozók leírása: about_Preference_Variables.
Változók használata
Új változó létrehozásához egy hozzárendelési utasítással rendeljen hozzá egy értéket a változóhoz. Használat előtt nem kell deklarálnia a változót. Az összes változó alapértelmezett értéke a .$null
A PowerShell-munkamenetben lévő összes változó listájának lekéréséhez írja be a következőt Get-Variable
: . A változónevek a változókra való hivatkozáshoz használt előző dollárjel ($
) nélkül jelennek meg.
Példa:
$MyVariable = 1, 2, 3
$Path = "C:\Windows\System32"
A változók hasznosak a parancsok eredményeinek tárolásához.
Példa:
$Processes = Get-Process
$Today = (Get-Date).DateTime
Egy változó értékének megjelenítéséhez írja be a változó nevét, amelyet egy dollárjel ($
) előz meg.
Példa:
$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46
Egy változó értékének módosításához rendeljen hozzá egy új értéket a változóhoz.
Az alábbi példák a változó értékét $MyVariable
jelenítik meg, módosítják a változó értékét, majd megjelenítik az új értéket.
$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.
Egy változó értékének törléséhez használja a Clear-Variable
parancsmagot, vagy módosítsa az értéket a következőre $null
: .
Clear-Variable -Name MyVariable
$MyVariable = $null
A változó törléséhez használja a Remove-Variable vagy az Remove-Item parancsot.
Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable
Egy utasítással több változóhoz is rendelhet értékeket. Az alábbi példák ugyanazt az értéket rendelik több változóhoz:
$a = $b = $c = 0
A következő példa több értéket rendel több változóhoz.
$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
További információt a about_Assignment_Operators Több változó hozzárendelése című szakaszában talál.
Változók típusai
Bármilyen típusú objektumot tárolhat egy változóban, beleértve az egész számokat, sztringeket, tömböket és kivonattáblákat. A folyamatokat, szolgáltatásokat, eseménynaplókat és számítógépeket ábrázoló objektumok.
A PowerShell-változók lazán vannak begépelve, ami azt jelenti, hogy nem korlátozódnak egy adott objektumtípusra. Egyetlen változó egyszerre több különböző típusú objektum gyűjteményét vagy tömböt is tartalmazhat.
A változó adattípusát a változó értékeinek .NET-típusai határozzák meg. Egy változó objektumtípusának megtekintéséhez használja a Get-Member függvényt.
Példa:
$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
A típusattribútum és a karakterjelezés használatával biztosíthatja, hogy egy változó csak adott objektumtípusokat vagy objektumokat tartalmazzon, amelyek átalakíthatók erre a típusra. Ha egy másik típusú értéket próbál hozzárendelni, a PowerShell megpróbálja átalakítani az értéket a típusára. Ha a típus nem konvertálható, a hozzárendelési utasítás meghiúsul.
Az öntött jelölés használatához írjon be egy típusnevet szögletes zárójelben a változó neve elé (a hozzárendelési utasítás bal oldalán). Az alábbi példa egy olyan változót $number
hoz létre, amely csak egész számokat tartalmazhat, egy olyan változót $words
, amely csak sztringeket tartalmazhat, és egy olyan változót $dates
, amely csak DateTime-objektumokat tartalmazhat.
[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
Változók használata parancsokban és kifejezésekben
Ha változót szeretne használni egy parancsban vagy kifejezésben, írja be a változó nevét, amelyet a dollár ($
) jel előz meg.
Ha a változó neve és a dollárjel nem idézőjelek közé van zárva, vagy ha idézőjelek közé"
vannak zárva, a változó értékét a parancs vagy kifejezés használja.
Ha a változó neve és a dollárjel egyetlen idézőjelben ('
) van elzárva, a változó neve a kifejezésben lesz használva.
Az idézőjelek PowerShellben való használatáról további információt a about_Quoting_Rules talál.
Ez a példa lekéri a $PROFILE
változó értékét, amely a PowerShell felhasználói profilfájljának elérési útja a PowerShell-konzolon.
$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Ebben a példában két parancs látható, amelyek megnyithatják a PowerShell-profilt notepad.exe. A dupla idézőjelet ("
) tartalmazó példa a változó értékét használja.
notepad $PROFILE
notepad "$PROFILE"
Az alábbi példák egy idézőjeleket ('
) használnak, amelyek a változót literális szövegként kezelik.
'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.
Speciális karaktereket tartalmazó változónevek
A változónevek dollárjellel kezdődnek$
, és alfanumerikus karaktereket és speciális karaktereket tartalmazhatnak. A változónév hosszát csak a rendelkezésre álló memória korlátozza.
Az ajánlott eljárás az, hogy a változónevek csak alfanumerikus karaktereket és aláhúzásjelet (_
) tartalmaznak. A szóközöket és más speciális karaktereket tartalmazó változónevek nehezen használhatók, ezért kerülni kell őket.
Az alfanumerikus változónevek a következő karaktereket tartalmazhatják:
- Unicode-karakterek a következő kategóriákból: Lu, Ll, Lt, Lm, Lo vagy Nd.
- Aláhúzásjel (
_
) karakter. - Kérdőjel (
?
) karakter.
Az alábbi lista a Unicode-kategória leírását tartalmazza. További információ: UnicodeCategory.
- Lu – Nagybetűs elem
- Ll – Kisbetűs
- Lt – TitlecaseLetter
- Lm – ModifierLetter
- Lo - OtherLetter
- Nd – DecimalDigitNumber
Ha szóközöket vagy speciális karaktereket tartalmazó változónevet szeretne létrehozni vagy megjeleníteni, csatolja a változó nevét a kapcsos zárójelek ({}
) karakterekkel.
A kapcsos zárójelek közvetlenül a PowerShellt irányítják a változónév karaktereinek literálként való értelmezéséhez.
A speciális karakterváltozók nevei a következő karaktereket tartalmazhatják:
- Bármely Unicode-karakter, a következő kivételekkel:
- A záró kapcsos zárójel (
}
) karakter (U+007D). - A backtick (
`
) karakter (U+0060). A backtick a Unicode-karakterek feloldására szolgál, így a rendszer konstansként kezeli őket.
- A záró kapcsos zárójel (
A PowerShell olyan fenntartott változókkal rendelkezik, mint $$
a , $?
, $^
és $_
alfanumerikus és speciális karaktereket tartalmaznak. További információ: about_Automatic_Variables.
A következő parancs például létrehozza a névvel ellátott változót save-items
. A kapcsos zárójelre ({}
) azért van szükség, mert a változó neve kötőjelet (-
) tartalmaz.
${save-items} = "a", "b", "c"
${save-items}
a
b
c
Az alábbi parancs lekéri a környezeti változó által képviselt gyermekelemeket a ProgramFiles(x86)
könyvtárban.
Get-ChildItem ${env:ProgramFiles(x86)}
Ha kapcsos zárójeleket tartalmazó változónévre szeretne hivatkozni, csatolja a változó nevét a kapcsos zárójelek közé, és használja a backtick karaktert a kapcsos zárójelek feloldásához. Például egy változó nevesített this{value}is
típus létrehozásához:
${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.
Változók és hatókör
Alapértelmezés szerint a változók csak abban a hatókörben érhetők el, amelyben létrehozták őket.
Egy függvényben létrehozott változó például csak a függvényen belül érhető el. Egy szkriptben létrehozott változó csak a szkripten belül érhető el. Ha pontozza a szkriptet, a változó hozzá lesz adva az aktuális hatókörhöz. További információ: about_Scopes.
A változó alapértelmezett hatókörének módosításához használhat hatókör-módosítót. A következő kifejezés létrehoz egy változót.Computers
A változó globális hatókörrel rendelkezik, még akkor is, ha szkriptben vagy függvényben lett létrehozva.
$Global:Computers = "Server01"
Minden olyan szkripthez vagy parancshoz, amely munkameneten kívül fut, a hatókör-módosítónak szüksége van a Using
változóértékek beágyazásához a hívási munkamenet hatóköréből, hogy a munkameneten kívüli kód hozzáférhessen hozzájuk.
További információ: about_Remote_Variables.
Változók mentése
A létrehozott változók csak abban a munkamenetben érhetők el, amelyben létrejönnek. A munkamenet bezárásakor elvesznek.
Ha minden megkezdett PowerShell-munkamenetben létre szeretné hozni a változót, adja hozzá a változót a PowerShell-profiljához.
Ha például minden PowerShell-munkamenetben módosítani szeretné a $VerbosePreference
változó értékét, adja hozzá a következő parancsot a PowerShell-profilhoz.
$VerbosePreference = "Continue"
Ezt a parancsot hozzáadhatja a PowerShell-profilhoz a fájl szövegszerkesztőben való megnyitásával $PROFILE
, például notepad.exe. További információ a PowerShell-profilokról: about_Profiles.
A változó: meghajtó
A PowerShell-változószolgáltató létrehoz egy meghajtót Variable:
, amely fájlrendszer-meghajtóként néz ki és működik, de tartalmazza a munkamenet változóit és azok értékeit.
A meghajtóra való váltáshoz Variable:
használja a következő parancsot:
Set-Location Variable:
A meghajtó elemeinek és változóinak Variable:
listázásához használja a parancsmagokat vagy Get-ChildItem
parancsmagokatGet-Item
.
Get-ChildItem Variable:
Egy adott változó értékének lekéréséhez a fájlrendszer jelölésével adja meg a meghajtó nevét és a változó nevét. Az automatikus változó lekéréséhez $PSCulture
például használja az alábbi parancsot.
Get-Item Variable:\PSCulture
Name Value
---- -----
PSCulture en-US
A meghajtóval és a Variable:
PowerShell-változó szolgáltatóval kapcsolatos további információk megjelenítéséhez írja be a következőt:
Get-Help Variable
Változószintaxis szolgáltatói elérési utakkal
A szolgáltatói elérési utat a dollár ($
) jellel előtaggal adhatja meg, és hozzáférhet az IContentCmdletProvider felületet implementáló bármely szolgáltató tartalmához.
A következő beépített PowerShell-szolgáltatók támogatják ezt a jelölést:
A változó parancsmagjai
A PowerShell változók kezelésére tervezett parancsmagokat tartalmaz.
A parancsmagok listázásához írja be a következőt:
Get-Command -Noun Variable
Ha segítségre van szüksége egy adott parancsmaghoz, írja be a következőt:
Get-Help <cmdlet-name>
Parancsmag neve | Leírás |
---|---|
Clear-Variable |
Egy változó értékét törli. |
Get-Variable |
Lekéri a változókat az aktuális konzolon. |
New-Variable |
Létrehoz egy új változót. |
Remove-Variable |
Töröl egy változót és annak értékét. |
Set-Variable |
Módosítja egy változó értékét. |