Megosztás a következőn keresztül:


Információk a változókról

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 $PSHOME vá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 $MaximumHistoryCount vá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 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.

Lásd még

a_Automatikus_Változókról

környezeti változókról

a_beállítási_változókról

a_Profilokról

az_Idézési_Szabályokról

about_Scopes