Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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, $processvagy $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
$PSHOMEváltozó például 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
$MaximumHistoryCountváltozó például meghatározza a munkamenet-előzmények bejegyzéseinek maximális számát.További információ, lista és a beállítási vá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 $null.
A PowerShell-munkamenetben lévő összes változó listájának lekéréséhez írja be a 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éldául:
$MyVariable = 1, 2, 3
$Path = "C:\Windows\System32"
A változók hasznosak a parancsok eredményeinek tárolásához.
Például:
$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éldául:
$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 $MyVariable változó értékét 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 $nullértékre.
Clear-Variable -Name MyVariable
$MyVariable = $null
A változó törléséhez használja Remove-Variable vagy Remove-Item.
Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable
Változótípusok
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. A változó objektumtípusának megtekintéséhez használja a Get-Member.
Például:
$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 létrehoz egy $number változót, amely csak egész számokat tartalmazhat, egy $words változót, amely csak sztringeket tartalmazhat, valamint egy $dates változót, 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 elkerve, akkor a kifejezés a változó nevét használja.
Az idézőjelek PowerShellben való használatával kapcsolatos további információkért lásd: about_Quoting_Rules.
Ez a példa a $PROFILE változó értékét adja meg, amely a PowerShell-konzol PowerShell-felhasználói profilfájljának elérési útja.
$PROFILE
C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Ebben a példában két parancs látható, amelyek megnyithatják a PowerShell-profilt notepad.exe. A kettős 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őjelet (') 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 egy dollár ($) előjellel 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, Lovagy Nd.
- Aláhúzásjel (
_) karakter. - Kérdőjel (
?) karakter.
Az alábbi lista a Unicode-kategóriák leírását tartalmazza. További információ: UnicodeCategory.
- Lu - Nagybetű
- Ll – Kisbetű
- Lt - CímesetLevél
- lm - Módosítóbetű
- Lo - EgyébLevél
- Nd – Decimális számjegyszám
Ha szóközöket vagy speciális karaktereket tartalmazó változónevet szeretne létrehozni vagy megjeleníteni, a változó nevét a kapcsos zárójelek ({}) karakterekkel együtt kell elhelyezni.
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 fenntartott változókkal rendelkezik, például $$, $?, $^és $_, amelyek alfanumerikus és speciális karaktereket tartalmaznak. További információért tekintse meg az *about_Automatic_Variables* témakört a éscímkék alatt.
A következő parancs például létrehozza a save-itemsnevű változót. A kapcsos kapcsos zárójelek ({}) azért szükségesek, mert a változó neve tartalmaz egy kötőjelet (-) speciális karaktert.
${save-items} = "a", "b", "c"
${save-items}
a
b
c
Az alábbi parancs lekéri a gyermekelemeket a könyvtárban, amelyet a ProgramFiles(x86) környezeti változó jelöl.
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 this{value}is nevű változó 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ó található a about_Scopesrészben.
A változó alapértelmezett hatókörének módosításához használhat hatókör-módosítót. Az alábbi kifejezés létrehoz egy Computersnevű változót. 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"
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 úgy, hogy megnyitja a $PROFILE fájlt egy szövegszerkesztőben, 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 Variable: meghajtót, 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 Variable: meghajtóra való váltáshoz használja a következő parancsot:
Set-Location Variable:
A Variable: meghajtó elemeinek és változóinak listázásához használja a Get-Item vagy Get-ChildItem parancsmagokat.
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 $PSCulture automatikus változó lekéréséhez például használja az alábbi parancsot.
Get-Item Variable:\PSCulture
Name Value
---- -----
PSCulture en-US
A Variable: meghajtóval és a 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 dollár ($) jellel előtagot adhat hozzá a szolgáltatói elérési úthoz, és hozzáférhet az IContentCmdletProvider interfészt implementáló szolgáltatók 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. |