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: , $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 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 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.

Lásd még