Az Windows PowerShell 5.1 és a PowerShell 7.x közötti különbségek
A Windows PowerShell 5.1 a .NET-keretrendszer 4.5-ös verzióra épül. A PowerShell 6.0 kiadásával a PowerShell a .NET Core 2.0-ra épülő nyílt forráskód projektté vált. A .NET-keretrendszer a .NET Core-ra való váltás lehetővé tette, hogy a PowerShell platformfüggetlen megoldássá váljon. A PowerShell Windows, macOS és Linux rendszeren fut.
A PowerShell nyelvében kevés különbség van a Windows PowerShell és a PowerShell között. A legfontosabb különbségek a PowerShell-parancsmagok Rendelkezésre állása és viselkedése a Windows és a nem Windows platformok között, valamint a .NET-keretrendszer és a .NET Core közötti különbségekből eredő változások.
Ez a cikk a Windows PowerShell és a PowerShell jelenlegi verziója közötti jelentős különbségeket és kompatibilitástörő változásokat foglalja össze. Ez az összefoglalás nem tartalmaz új szolgáltatásokat vagy parancsmagokat, amelyeket hozzáadtak. Ez a cikk azt sem ismerteti, hogy mi változott a verziók között. A cikk célja, hogy bemutassuk a PowerShell jelenlegi állapotát, és azt, hogy miben különbözik a Windows PowerShelltől. A verziók közötti változások és az új funkciók hozzáadásának részletes ismertetéséhez tekintse meg az egyes verziók újdonságait ismertető cikkeket.
- A PowerShell 7.5 újdonságai
- A PowerShell 7.4 újdonságai
- A PowerShell 7.3 újdonságai
- A PowerShell 7.2 újdonságai
- A PowerShell 7.1 újdonságai
- A PowerShell 7.0 újdonságai
- A PowerShell 6.x újdonságai
.NET-keretrendszer és .NET Core
A Linuxon és macOS-en futó PowerShell .NET core-t használ, amely a Microsoft Windows teljes .NET-keretrendszer részhalmaza. Ez azért jelentős, mert a PowerShell közvetlen hozzáférést biztosít az alapul szolgáló keretrendszertípusokhoz és metódusokhoz. Ennek eredményeképpen előfordulhat, hogy a Windowson futó szkriptek nem windowsos platformokon futnak a keretrendszerek közötti különbségek miatt. A .NET Core változásairól további információt a .NET-keretrendszer-ről a .NET Core-ra való migrálás kompatibilitástörő változásairól talál.
A PowerShell minden új kiadása a .NET újabb verziójára épül. A .NET-ben kompatibilitástörő változások lehetnek, amelyek hatással vannak a PowerShellre.
- PowerShell 7.5 – A .NET 9.0-ra épül
- PowerShell 7.4 – A .NET 8.0-ra épül
- PowerShell 7.3 – A .NET 7.0-ra épül
- PowerShell 7.2 (LTS-current) – .NET 6.0-ra (LTS-current) épül
- PowerShell 7.1 – .NET 5.0-s verzióra épül
- PowerShell 7.0 (LTS) – .NET Core 3.1 (LTS) alapú
- PowerShell 6.2 – .NET Core 2.1-alapú
- PowerShell 6.1 – .NET Core 2.1-alapú
- PowerShell 6.0 – A .NET Core 2.0-ra épül
A .NET Standard 2.0 megjelenésével a PowerShell módosítás nélkül betölthet számos hagyományos Windows PowerShell-modult. Emellett a PowerShell 7 tartalmaz egy Windows PowerShell kompatibilitási funkciót is, amely lehetővé teszi a teljes keretrendszert igénylő Windows PowerShell-modulok használatát.
További információk:
Vegye figyelembe a .NET-metódus változásait
Bár a .NET-metódusok módosításai nem a PowerShellre vonatkoznak, hatással lehetnek a szkriptekre, különösen akkor, ha közvetlenül .NET-metódusokat hív meg. Emellett előfordulhat, hogy a konstruktorok túlterheltek. Ez hatással lehet arra, hogyan hozhat létre objektumokat a módszerrel New-Object
vagy a [type]::new()
módszerrel.
A .NET például túlterheléseket adott hozzá a [System.String]::Split()
metódushoz, amelyek nem érhetők el a .NET-keretrendszer 4.5-ben. Az alábbi lista a Windows PowerShell 5.1-ben elérhető metódus túlterheléseit Split()
mutatja be:
PS> "".Split
OverloadDefinitions
-------------------
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
Az alábbi lista a PowerShell 7-ben elérhető metódus túlterheléseit Split()
mutatja be:
"".Split
OverloadDefinitions
-------------------
string[] Split(char separator, System.StringSplitOptions options)
string[] Split(char separator, int count, System.StringSplitOptions options)
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string separator, System.StringSplitOptions options)
string[] Split(string separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
A Windows PowerShell 5.1-ben egy karaktertömböt (char[]
) adhat át a Split()
metódusnak string
. A metódus felosztja a célsztringet a tömb egyik karakterének előfordulásakor. A következő parancs felosztja a célsztringet a Windows PowerShell 5.1-ben, a PowerShell 7-ben azonban nem:
# PowerShell 7 example
"1111p2222q3333".Split('pq')
1111p2222q3333
A megfelelő túlterheléshez való kötéshez a sztringet karaktertömbbe kell beírnia:
# PowerShell 7 example
"1111p2222q3333".Split([char[]]'pq')
1111
2222
3333
A PowerShell-lel már nem szállított modulok
Különböző kompatibilitási okokból a következő modulok már nem szerepelnek a PowerShellben.
- ISE
- Microsoft.PowerShell.LocalAccounts
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Operation.Validation
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
PowerShell-munkafolyamat
A PowerShell-munkafolyamat a Windows PowerShell egyik funkciója, amely a Windows Workflow Foundation (WF) rendszerre épül, amely lehetővé teszi robusztus runbookok létrehozását a hosszú ideig futó vagy párhuzamos feladatokhoz.
A .NET Core-ban a Windows Workflow Foundation támogatásának hiánya miatt eltávolítottuk a PowerShell-munkafolyamatot a PowerShellből.
A jövőben szeretnénk engedélyezni a natív párhuzamosságot/egyidejűséget a PowerShell-nyelven anélkül, hogy PowerShell-munkafolyamatra lenne szükség.
Ha az operációs rendszer újraindítása után ellenőrzőpontokat kell használni a szkriptek folytatásához, javasoljuk, hogy a Feladatütemezővel futtasson egy szkriptet az operációs rendszer indításakor, de a szkriptnek meg kell őriznie a saját állapotát (például egy fájlban kell megőriznie).
A PowerShellből eltávolított parancsmagok
A PowerShellben található modulok esetében a következő parancsmagok különböző kompatibilitási okokból vagy nem támogatott API-k használata miatt lettek eltávolítva a PowerShellből.
CimCmdlets
Export-BinaryMiLog
Microsoft.PowerShell.Core
Add-PSSnapin
Export-Console
Get-PSSnapin
Remove-PSSnapin
Resume-Job
Suspend-Job
Microsoft.PowerShell.Diagnostics
Export-Counter
Import-Counter
Microsoft.PowerShell.Management
Add-Computer
Checkpoint-Computer
Clear-EventLog
Complete-Transaction
Disable-ComputerRestore
Enable-ComputerRestore
Get-ComputerRestorePoint
Get-ControlPanelItem
Get-EventLog
Get-Transaction
Get-WmiObject
Invoke-WmiMethod
Limit-EventLog
New-EventLog
New-WebServiceProxy
Register-WmiEvent
Remove-Computer
Remove-EventLog
Remove-WmiObject
Reset-ComputerMachinePassword
Restore-Computer
Set-WmiInstance
Show-ControlPanelItem
Show-EventLog
Start-Transaction
Test-ComputerSecureChannel
Undo-Transaction
Use-Transaction
Write-EventLog
Microsoft.PowerShell.Utility
Convert-String
ConvertFrom-String
PSDesiredStateConfiguration
Disable-DscDebug
Enable-DscDebug
Get-DscConfiguration
Get-DscConfigurationStatus
Get-DscLocalConfigurationManager
Publish-DscConfiguration
Remove-DscConfigurationDocument
Restore-DscConfiguration
Set-DscLocalConfigurationManager
Start-DscConfiguration
Stop-DscConfiguration
Test-DscConfiguration
Update-DscConfiguration
WMI v1-parancsmagok
A következő WMI v1-parancsmagok el lettek távolítva a PowerShellből:
Register-WmiEvent
Set-WmiInstance
Invoke-WmiMethod
Get-WmiObject
Remove-WmiObject
A CimCmdlets modul (más néven WMI v2) parancsmagok ugyanazt a függvényt hajtják végre, és új funkciókat és újratervezett szintaxist biztosítanak.
New-WebServiceProxy
a parancsmag el lett távolítva
A .NET Core nem támogatja a Windows kommunikációs keretrendszert, amely szolgáltatásokat nyújt a SOAP protokoll használatához. Ez a parancsmag el lett távolítva, mert SOAP-t igényel.
*-Transaction
eltávolított parancsmagok
Ezek a parancsmagok nagyon korlátozottan voltak használatban. Döntés született a támogatás megszüntetéséről.
Complete-Transaction
Get-Transaction
Start-Transaction
Undo-Transaction
Use-Transaction
*-EventLog
Parancsmagok
A nem támogatott API-k használata miatt a parancsmagok el lettek távolítva a *-EventLog
PowerShellből.
Get-WinEvent
és New-WinEvent
elérhetők események lekéréséhez és létrehozásához Windows rendszeren.
A Windows-bemutató keretrendszert (WPF) használó parancsmagok
A .NET Core 3.1 támogatja a WPF-et, ezért a PowerShell 7.0 kiadása a következő Windows-specifikus funkciókat állította vissza:
- A
Show-Command
parancsmag - A
Out-GridView
parancsmag - A ShowWindow paraméter
Get-Help
A PowerShell kívánt állapotkonfigurációjának (DSC) változásai
Invoke-DscResource
a PowerShell 7.0 kísérleti funkciójaként lett visszaállítva.
A PowerShell 7.2-től kezdve a PSDesiredStateConfiguration modul el lett távolítva a PowerShellből, és közzé lett téve a PowerShell-galéria. További információkért tekintse meg a PowerShell-csapat blogjában található közleményt .
Végrehajtható PowerShell-módosítások
A powershell.exe
átnevezve: pwsh.exe
A PowerShell bináris neve a következőre módosult powershell(.exe)
pwsh(.exe)
: . Ez a módosítás determinisztikus módot biztosít a felhasználók számára a PowerShell gépeken való futtatására, valamint a Windows PowerShell és a PowerShell egymás melletti telepítéseinek támogatására.
További módosítások a pwsh(.exe)
következőtől powershell.exe
:
- Az első pozícióparamétert a következőre
-Command
-File
módosította: . Ez a módosítás kijavítja a (más néven shebangként) használt PowerShell-szkriptek használatát#!
, amelyeket nem PowerShell-rendszerhéjakból hajtanak végre nem Windows-platformokon. Azt is jelenti, hogy parancsokat futtathat, példáulpwsh foo.ps1
vagypwsh fooScript
anélkül-File
. Ehhez a módosításhoz azonban explicit módon kell megadnia-c
a parancsokat, vagy-Command
olyan parancsokat kell futtatnia, mint apwsh.exe -Command Get-Command
. pwsh
-i
a (vagy-Interactive
) kapcsolót fogadja el egy interaktív rendszerhéj jelzésére. Ez lehetővé teszi, hogy a PowerShell alapértelmezett rendszerhéjként legyen használva a Unix-platformokon.- Eltávolított paraméterek
-ImportSystemModules
és-PSConsoleFile
apwsh.exe
. pwsh -version
Módosított és beépített súgó más natív eszközökhöz való igazításhozpwsh.exe
.- Érvénytelen argumentumhiba a Unix-szabványokkal konzisztens kódokhoz
-File
és-Command
kilépési kódokhoz - Paraméter hozzáadva
-WindowStyle
a Windowshoz. Hasonlóképpen, a nem Windows-platformok csomagalapú telepítéseinek frissítései helyben frissülnek.
A rövidített név összhangban van a nem Windows-platformokon futó rendszerhéjak elnevezésével is.
PowerShell-szkript futtatásának támogatása bool paraméterrel
pwsh.exe
Korábban egy PowerShell-szkript -File
futtatásával, a megadott módon nem adhat át $true
/$false
paraméterértékeket. $true
/$false
A paraméterelemzett értékek támogatása hozzáadva. A kapcsolóértékek is támogatottak.
Továbbfejlesztett visszamenőleges kompatibilitás a Windows PowerShell-lel
Windows esetén a rendszer hozzáad egy új kapcsolóparamétert a UseWindowsPowerShellhezImport-Module
. Ez a kapcsoló létrehoz egy proxymodult a PowerShell 7-ben, amely egy helyi Windows PowerShell-folyamatot használ a modulban található parancsmagok implicit futtatásához. További információ: Import-Module.
A Microsoft-modulok PowerShell 7.0-val való működéséről további információt a Modulkompatibilitási táblázat tartalmaz.
A Windows Microsoft Update támogatása
A PowerShell 7.2 támogatja a Microsoft Update-et. Ha engedélyezi ezt a funkciót, a hagyományos Windows Update (WU) felügyeleti folyamat legújabb PowerShell 7-frissítéseit fogja megkapni, legyen szó a Windows Update vállalati verzióról, a WSUS-ról, az SCCM-ről vagy a Gépház interaktív WU-párbeszédpaneljéről.
A PowerShell 7.2 MSI-csomag a következő parancssori beállításokat tartalmazza:
USE_MU
- Ez a tulajdonság két lehetséges értékkel rendelkezik:1
(alapértelmezett) – A Microsoft Update vagy a WSUS frissítését választja0
– Ne válasszon a Microsoft Update vagy a WSUS segítségével történő frissítés mellett
ENABLE_MU
1
(alapértelmezett) – A Microsoft Update automatikus Frissítések vagy Windows Update használatát választja0
– Ne használja a Microsoft Update automatikus Frissítések vagy Windows Update használatát
Motorváltozások
A PowerShell támogatása alapértelmezett Unix-rendszerhéjként
A Unix esetében a rendszerhéjakra vonatkozó konvenció, hogy egy interaktív rendszerhéjat fogadjanak el -i
, és számos eszköz elvárja ezt a viselkedést (script
például amikor a PowerShellt állítja be alapértelmezett rendszerhéjként), és meghívja a rendszerhéjat a -i
kapcsolóval. Ez a változás azért törik meg , mert -i
korábban rövid kézként -inputformat
is használható volt , ami most már szükséges .-in
Egyéni beépülő modulok
A PowerShell beépülő modulok olyan PowerShell-modulok elődjei, amelyek nem rendelkeznek széles körű bevezetéssel a PowerShell-közösségben.
A beépülő modulok támogatásának összetettsége és a közösségen belüli használat hiánya miatt a Továbbiakban nem támogatjuk az egyéni beépülő modulokat a PowerShellben.
Kísérleti funkciójelzők
A PowerShell 6.2 támogatja a kísérleti funkciókat. Ez lehetővé teszi, hogy a PowerShell-fejlesztők új funkciókat nyújtsanak, és visszajelzést kérjenek a tervezés befejezése előtt. Így elkerüljük a kompatibilitástörő változtatásokat a kialakítás fejlődésével.
Az elérhető kísérleti funkciók listájának lekérésére használható Get-ExperimentalFeature
. Ezeket a funkciókat engedélyezheti vagy letilthatja a következővel Enable-ExperimentalFeature
: és Disable-ExperimentalFeature
.
Szerelvény betöltése a modul alapútvonaláról, mielőtt megpróbálna betöltődni a GAC-ból
Korábban, amikor egy bináris modul rendelkezik a modul szerelvényével a GAC-ban, betöltöttük a szerelvényt a GAC-ból, mielőtt megpróbálnánk betölteni a modul alapútvonaláról.
Érték típusú elemtípusú gyűjtemények nullelemes ellenőrzésének kihagyása
A paraméter és ValidateNotNull
ValidateNotNullOrEmpty
az Mandatory
attribútumok esetében hagyja ki a null elem ellenőrzését, hogy a gyűjtemény elemtípusa értéktípus-e.
ParenExpression, SubExpression és ArrayExpression megőrzése $?
Ez a lekéréses kérelem megváltoztatja az alhálózatok (...)
, alkifejezések $(...)
és tömbkifejezések @()
fordításának módját, hogy $?
az ne legyen automatikusan igaz. Ehelyett a $?
folyamat vagy a végrehajtott utasítások eredményétől függ.
Javítás $?
, hogy ne legyen, $false
amikor a natív parancs ide ír stderr
$?
nincs beállítva, amikor a $false
natív parancs a következőre stderr
ír: . Gyakori, hogy stderr
a natív parancsok nem kívánják jelezni a hibát. $?
csak akkor van beállítva, $false
ha a natív parancs nem nulla kilépési kóddal rendelkezik.
Ne $ErrorActionPreference
befolyásolja stderr
a natív parancsok kimenetét
Gyakori, hogy stderr
a natív parancsok nem kívánják jelezni a hibát. Ezzel a módosítással stderr
a kimenet továbbra is rögzítve lesz Az ErrorRecord objektumokban, de a futtatókörnyezet már nem érvényes$ErrorActionPreference
, ha az ErrorRecord natív parancsból származik.
Váltás $OutputEncoding
kódolásra UTF-8 NoBOM
az ASCII helyett
Az előző kódolás, az ASCII (7 bites) bizonyos esetekben helytelenül változtatná meg a kimenetet. Az alapértelmezett beállítás UTF-8 NoBOM
megőrzi a Unicode-kimenetet a legtöbb eszköz és operációs rendszer által támogatott kódolással.
A parancsmagok egyesítése a típusnak megfelelő paraméterrel -Encoding
System.Text.Encoding
Az -Encoding
érték Byte
el lett távolítva a fájlrendszer-szolgáltató parancsmagjaiból. A rendszer most egy új paramétert használ annak megadására, -AsByteStream
hogy a bájtfolyam bemenetként szükséges-e, vagy hogy a kimenet bájtok adatfolyama.
UTF8NoBOM
Kódolás módosítása New-ModuleManifest
nem Windows-platformokra
New-ModuleManifest
Korábban jegyzékfájlokat hozott létre psd1
az UTF-16-ban a BOM használatával, ami problémát okoz a Linux-eszközökhöz. Ez a kompatibilitástörő változás megváltoztatja az UTF (nincs BOM) kódolását New-ModuleManifest
a nem Windows-platformokon.
Eltávolítás AllScope
a legtöbb alapértelmezett aliasból
A hatókör létrehozásának AllScope
felgyorsításához a legtöbb alapértelmezett alias el lett távolítva. AllScope
néhány gyakran használt aliasra maradt, ahol a keresés gyorsabb volt.
-Verbose
és -Debug
többé nem bírálja felül a $ErrorActionPreference
Korábban, ha -Verbose
meg lett adva vagy -Debug
meg lett adva, felülírja a viselkedését $ErrorActionPreference
. Ezzel a módosítással, -Verbose
és -Debug
a továbbiakban nem befolyásolja a viselkedését $ErrorActionPreference
.
Emellett a paraméter az Inquire helyett a Continue (Folytatás) értékre van adva $DebugPreference
.-Debug
Konzisztens $PSCulture
tükrözés a munkamenet-kultúra változásaival
A Windows PowerShellben a rendszer gyorsítótárazza az aktuális kulturális értéket, amely lehetővé teszi, hogy az érték a munkamenet indítása után megváltozzon a kultúrával való szinkronizálásból. Ez a gyorsítótárazási viselkedés a PowerShell-magban van javítva.
A explicit módon megadott elnevezett paraméter felülírja ugyanazt a kivonatoló splatting paramétert
Ezzel a módosítással a rendszer áthelyezi a névvel ellátott paramétereket a splattingból a paraméterlista végére, hogy az összes explicit módon megadott elnevezett paraméter kötött legyen. Az egyszerű függvények paraméterkötése nem ad hibát, ha egy megadott elnevezett paraméter nem található. Az ismeretlen elnevezett paraméterek az $args
egyszerű függvény paraméteréhez vannak kötve. Az argumentumlista végére való áthelyezés megváltoztatja a paraméterek megjelenési sorrendjét $args
.
Példa:
function SimpleTest {
param(
$Name,
$Path
)
"Name: $Name; Path: $Path; Args: $args"
}
Az előző viselkedésben a MyPath nem kötelező-Path
, mert ez a harmadik argumentum az argumentumlistában. ## Így végül a "$args" és a Blah = "World"
PS> $hash = @{ Name = "Hello"; Blah = "World" }
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: ; Args: -Blah: World MyPath
Ezzel a módosítással az argumentumok @hash
az argumentumlista végére kerülnek. A MyPath lesz az első argumentum a listában, ezért a következőhöz -Path
van kötve: .
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: MyPath; Args: -Blah: World
Nyelvi változások
Null-szénerősítési operátor ??
A null-szenesítő operátor ??
a bal oldali operandus értékét adja vissza, ha nem null.
Ellenkező esetben kiértékeli a jobb oldali operandust, és visszaadja annak eredményét. Az ??
operátor nem értékeli ki a jobb oldali operandusát, ha a bal oldali operandus értéke nem null.
$x = $null
$x ?? 100
100
Az alábbi példában a jobb oldali operandus nem lesz kiértékelve.
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
Null-szenesítési hozzárendelés operátora ??=
A null-szenesítés-hozzárendelési operátor ??=
csak akkor rendeli hozzá a jobb oldali operandus értékét a bal oldali operandushoz, ha a bal oldali operandus null értékű. Az ??=
operátor nem értékeli ki a jobb oldali operandusát, ha a bal oldali operandus értéke nem null.
$x = $null
$x ??= 100
$x
100
Az alábbi példában a jobb oldali operandus nem lesz kiértékelve.
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
Null feltételes operátorok
Feljegyzés
Ezt a funkciót a PowerShell 7.1-ben a kísérleti verzióról a mainstreamre helyezték át.
A null feltételes operátor csak akkor alkalmaz taghozzáférést vagy ?.
elemhozzáférést az operandusra, ?[]
ha az operandus nem null értékű; ellenkező esetben null értéket ad vissza.
Mivel a PowerShell lehetővé teszi ?
, hogy a változónév része legyen, a változó nevének formális specifikációja szükséges az operátorok használatához. Ezért a változónevek körül kell használni {}
, például ${a}
vagy amikor ?
a változónév ${a?}
része.
Az alábbi példában a PropName értéke lesz visszaadva.
$a = @{ PropName = 100 }
${a}?.PropName
100
Az alábbi példa null értéket ad vissza, anélkül, hogy megpróbálná elérni a PropName tagnevet.
$a = $null
${a}?.PropName
Hasonlóképpen az elem értékét is visszaadja a rendszer.
$a = 1..10
${a}?[0]
1
Ha az operandus null értékű, az elem nem érhető el, és a null értéket adja vissza.
$a = $null
${a}?[0]
Feljegyzés
A változónév szintaxisa ${<name>}
nem tévesztendő össze az $()
alexpressziós operátorral. További információt a about_Variables Változónév szakaszában talál.
Operátor hozzáadva &
a feladatvezérléshez
A folyamat végére helyezéssel &
a folyamat PowerShell-feladatként fut. Ha egy folyamat háttérrendszerrel rendelkezik, egy feladatobjektum lesz visszaadva. Miután a folyamat feladatként fut, az összes szabványos *-Job
parancsmag használható a feladat kezelésére. A folyamat során használt változók (a folyamatspecifikus változók figyelmen kívül hagyása) automatikusan át lesznek másolva a feladatba, így Copy-Item $foo $bar &
egyszerűen működik. A feladat a felhasználó kezdőkönyvtára helyett az aktuális könyvtárban is fut.
Új metódusok/tulajdonságok bekapcsolva PSCustomObject
Új metódusokat és tulajdonságokat adtunk hozzá.PSCustomObject
PSCustomObject
Mostantól a többi objektumhoz hasonló tulajdonságot is tartalmaz Count
/Length
.
$PSCustomObject = [pscustomobject]@{foo = 1}
$PSCustomObject.Length
1
$PSCustomObject.Count
1
Ez a munka olyan módszereket is tartalmaz ForEach
, Where
amelyek lehetővé teszik az elemek üzemeltetését és szűrését PSCustomObject
:
$PSCustomObject.ForEach({$_.foo + 1})
2
$PSCustomObject.Where({$_.foo -gt 0})
foo
---
1
Konvertálás PSMethodról meghatalmazottra
Delegálttá alakíthat egy PSMethod
meghatalmazottat. Ez lehetővé teszi például, hogy delegált PSMethod
[M]::DoubleStrLen
értékként adja át a [M]::AggregateString
következőt:
class M {
static [int] DoubleStrLen([string] $value) { return 2 * $value.Length }
static [long] AggregateString([string[]] $values, [func[string, int]] $selector) {
[long] $res = 0
foreach($s in $values){
$res += $selector.Invoke($s)
}
return $res
}
}
[M]::AggregateString((gci).Name, [M]::DoubleStrLen)
A sztringek összehasonlítási viselkedése megváltozott a PowerShell 7.1-ben
A PowerShell 7.1 a .NET 5.0-ra épül, amely a következő kompatibilitástörő változást vezette be:
A .NET 5.0-s verziójában a kulturális invariáns sztring-összehasonlítások figyelmen kívül hagyják a nem nyomtatható vezérlőkarakterek karaktereit.
A következő két sztring például azonosnak tekinthető:
# Escape sequence "`a" is Ctrl-G or [char]7
'Food' -eq "Foo`ad"
True
Új parancsmagok
Új Get-Uptime parancsmag
A Get-Uptime parancsmag az operációs rendszer utolsó indítása óta eltelt időt adja vissza. A parancsmag a PowerShell 6.0-ban lett bevezetve.
Új Remove-Alias parancsmag
Az Alias eltávolítása parancsmag eltávolít egy aliast az aktuális PowerShell-munkamenetből. A parancsmag a PowerShell 6.0-ban lett bevezetve.
Új parancsmag – Szolgáltatás eltávolítása
A Remove-Service parancsmag eltávolít egy Windows-szolgáltatást a beállításjegyzékben és a szolgáltatásadatbázisban. A Remove-Service
parancsmag a PowerShell 6.0-ban lett bevezetve.
Új Markdown-parancsmagok
A Markdown a HTML-ben megjeleníthető egyszerű szöveges dokumentumok egyszerű formázással történő létrehozására szolgáló szabvány.
A Következő parancsmagok lettek hozzáadva a PowerShell 6.1-ben:
- ConvertFrom-Markdown – Sztring vagy fájl tartalmának átalakítása MarkdownInfo-objektummá.
- Get-MarkdownOption – A Markdown-tartalom konzolon való megjelenítéséhez használt aktuális színeket és stílusokat adja vissza.
- Set-MarkdownOption – Beállítja a Markdown-tartalom konzolon való megjelenítéséhez használt színeket és stílusokat.
- Show-Markdown – Markdown-tartalom megjelenítése a konzolon vagy HTML formátumban
Új Test-Json-parancsmag
A Test-Json parancsmag ellenőrzi, hogy egy sztring érvényes JavaScript Object Notation -dokumentum-e, és opcionálisan ellenőrizheti, hogy a JSON-dokumentum egy megadott sémán van-e.
Ez a parancsmag a PowerShell 6.1-ben lett bevezetve
Új parancsmagok a kísérleti funkciók támogatásához
A PowerShell 6.2-ben a következő parancsmagok lettek hozzáadva a kísérleti funkciók támogatásához.
Új illesztősztring-parancsmag
A Join-String parancsmag egyetlen sztringbe egyesíti a folyamat objektumait. Ez a parancsmag a PowerShell 6.2-ben lett hozzáadva.
Új nézet ConciseView és parancsmag get-error
A PowerShell 7.0 új alapértelmezett nézetével, a ConciseView-val javítja a hibaüzenetek megjelenítését az interaktív és szkripthibák olvashatóságának javítása érdekében. A nézetek a beállításváltozón $ErrorView
keresztül választhatók ki.
A ConciseView esetén, ha egy hiba nem szkriptből vagy elemzési hibából származik, akkor ez egy egysoros hibaüzenet:
Get-Childitem -Path c:\NotReal
Get-ChildItem: Cannot find path 'C:\NotReal' because it does not exist
Ha a hiba a szkript végrehajtása során vagy elemzési hiba, a PowerShell egy többsoros hibaüzenetet ad vissza, amely tartalmazza a hibát, egy mutatót és egy hibaüzenetet, amely azt jelzi, hogy hol található a hiba az adott sorban. Ha a terminál nem támogatja az ANSI színkioldó sorozatokat (VT100), akkor a színek nem jelennek meg.
A PowerShell 7 alapértelmezett nézete a ConciseView. Az előző alapértelmezett nézet a NormalView volt, és ezt a beállítási változó $ErrorView
beállításával választhatja ki.
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Feljegyzés
Az ErrorAccentColor új tulajdonságot ad hozzá a hibaüzenet jelölőszínének módosításához$Host.PrivateData
.
Az új Get-Error
parancsmag részletes áttekintést nyújt a teljes hibaről, ha szükséges. Alapértelmezés szerint a parancsmag megjeleníti az utolsó hiba teljes részleteit, beleértve a belső kivételeket is.
A Get-Error
parancsmag támogatja a folyamat bemenetét a beépített változó $Error
használatával.
Get-Error
megjeleníti az összes csőhibát.
$Error | Get-Error
A Get-Error
parancsmag támogatja a Legújabb paramétert, így megadhatja, hogy hány hiba jelenjen meg az aktuális munkamenetből.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
További információ: Get-Error.
A parancsmag módosításai
Párhuzamos végrehajtás hozzáadva a ForEach-Objecthoz
A PowerShell 7.0-tól kezdve a ForEach-Object
gyűjtemény elemeit iteráló parancsmag beépített párhuzamossággal rendelkezik az új Párhuzamos paraméterrel.
A párhuzamos szkriptblokkok alapértelmezés szerint a párhuzamos feladatokat kezdeményező hívó aktuális munkakönyvtárát használják.
Ez a példa 50 000 naplóbejegyzést kér le 5 rendszernaplóból egy helyi Windows-gépen:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
A Párhuzamos paraméter az egyes bemeneti naplónevekhez párhuzamosan futó szkriptblokkot adja meg.
Az új ThrottleLimit paraméter korlátozza az egy adott időpontban párhuzamosan futó szkriptblokkok számát. Az alapértelmezett érték 5.
A változóval $_
a szkriptblokk aktuális bemeneti objektumát jelölheti. $using:
A hatókör használatával változóhivatkozásokat adhat át a futó szkriptblokknak.
További információ: ForEach-Object.
Kompatibilis beépített modulok keresése system32
Windows rendszeren
A Windows 10 1809 frissítésében és a Windows Server 2019-ben számos beépített PowerShell-modult frissítettünk, hogy kompatibilisek legyenek a PowerShell-lel.
A PowerShell indításakor automatikusan bele fog tartozni $windir\System32
a PSModulePath
környezeti változóba. Azonban csak akkor teszi elérhetővé a Get-Module
Import-Module
modulokat, ha azok CompatiblePSEdition
kompatibilisként vannak megjelölve.Core
Ezt a viselkedést felülbírálhatja, hogy az összes modul megjelenjen a -SkipEditionCheck
kapcsolóparaméter használatával.
Egy tulajdonságot is hozzáadtunk PSEdition
a tábla kimenetéhez.
-lp
alias az összes -LiteralPath
paraméterhez
Létrehoztunk egy szabványos paraméter aliast -lp
az összes beépített PowerShell-parancsmaghoz, amely rendelkezik paraméterrel -LiteralPath
.
Javítás Get-Item -LiteralPath a*b
, ha a*b
valójában nem létezik a visszatérési hiba
Korábban a -LiteralPath
helyettesítő karakterek ugyanúgy kezelik, mint -Path
a helyettesítő karaktert, és ha a helyettesítő karakter nem talál fájlokat, akkor csendben kilépne. A helyes viselkedésnek konstansnak kell lennie, -LiteralPath
ezért ha a fájl nem létezik, hiba kell, hogy legyen. A módosítás a konstansként használt -Literal
helyettesítő karaktereket kezeli.
A munkakönyvtár beállítása az aktuális könyvtárra a következő helyen: Start-Job
A Start-Job
parancsmag most az aktuális könyvtárat használja az új feladat munkakönyvtáraként.
*-Computer
Eltávolítás -Protocol
parancsmagokból
A CoreFX-ben (különösen a nem Windows-platformokon) végzett RPC-újraformálással és a PowerShell konzisztens újraformálási élményének biztosításával kapcsolatos problémák miatt a -Protocol
paraméter el lett távolítva a \*-Computer
parancsmagokból. A DCOM már nem támogatott az újraküldéshez. A következő parancsmagok csak a WSMAN-újraküldést támogatják:
Rename-Computer
Restart-Computer
Stop-Computer
*-Service
Eltávolítás -ComputerName
parancsmagokból
A PSRP konzisztens használatának ösztönzése érdekében a paraméter el lett távolítva *-Service
a -ComputerName
parancsmagokból.
Javítás Get-Content -Delimiter
, hogy ne tartalmazza a határolót a visszaadott sorokban
Korábban a használat Get-Content -Delimiter
közbeni kimenet inkonzisztens és kényelmetlen volt, mivel az adatok további feldolgozására volt szükség a határoló eltávolításához. Ez a módosítás eltávolítja a visszaküldött sorok elválasztójelét.
Változások a Format-Hex
A -Raw
paraméter most egy "no-op" (abban, hogy nem csinál semmit). Az összes kimenet előrehaladtával a számok valódi ábrázolása jelenik meg, amely a típushoz tartozó összes bájtot tartalmazza. Ezt tette a -Raw
paraméter a módosítás előtt.
Elírás javítása a Get-ComputerInfo tulajdonságnévben
BiosSerialNumber
hibásan lett elírva BiosSeralNumber
, és a megfelelő helyesírásra lett módosítva.
Parancsmagok hozzáadása Get-StringHash
és Get-FileHash
parancsmagok
Ez a változás azt jelzi, hogy egyes kivonatoló algoritmusokat a CoreFX nem támogat, ezért ezek már nem érhetők el:
MACTripleDES
RIPEMD160
Érvényesítés Get-*
hozzáadása olyan parancsmagokhoz, ahol a továbbítási $null hiba helyett az összes objektumot visszaadja
Az alábbiak bármelyikének való $null
átadáskor hiba jelenik meg:
Get-Credential -UserName
Get-Event -SourceIdentifier
Get-EventSubscriber -SourceIdentifier
Get-Help -Name
Get-PSBreakpoint -Script
Get-PSProvider -PSProvider
Get-PSSessionConfiguration -Name
Get-Runspace -Name
Get-RunspaceDebug -RunspaceName
Get-Service -Name
Get-TraceSource -Name
Get-Variable -Name
A W3C kiterjesztett naplófájlformátum támogatása a következőben: Import-Csv
Korábban a Import-Csv
parancsmag nem használható a naplófájlok W3C kiterjesztett naplófájlformátumban való közvetlen importálására, és további műveletre lenne szükség. Ezzel a módosítással a W3C kiterjesztett naplóformátuma támogatott.
Import-Csv
az importáláskor alkalmazandó PSTypeNames
, ha a CSV-ben típusinformációk találhatók
Korábban az importált objektumokkal TypeInformation
ConvertFrom-Csv
exportált Export-CSV
objektumok nem őrizték meg a típusadatokat. Ez a módosítás hozzáadja a típusadatokat a taghoz PSTypeNames
, ha elérhetők a CSV-fájlból.
-NoTypeInformation
az alapértelmezett beállítás: Export-Csv
Korábban a Export-CSV
parancsmag egy megjegyzést adott ki az objektum típusnevét tartalmazó első sorként. A módosítás alapértelmezés szerint kizárja a típusadatokat, mert a legtöbb CSV-eszköz nem érti. Ez a módosítás az ügyfelek visszajelzésének kezelése érdekében történt.
Az előző viselkedés megőrzésére használható -IncludeTypeInformation
.
A beállításjegyzék elérési útjának engedélyezése *
a következőhöz: Remove-Item
Korábban a -LiteralPath
helyettesítő karakterek ugyanúgy kezelik, mint -Path
a helyettesítő karaktert, és ha a helyettesítő karakter nem talál fájlokat, akkor csendben kilépne. A helyes viselkedésnek konstansnak kell lennie, -LiteralPath
ezért ha a fájl nem létezik, hiba kell, hogy legyen. A módosítás a konstansként használt -Literal
helyettesítő karaktereket kezeli.
A Group-Object mostantól rendezi a csoportokat
A teljesítményjavítás Group-Object
részeként most a csoportok rendezett listáját adja vissza.
Bár nem szabad a sorrendre támaszkodnia, az első csoport használata esetén ez a változás megtörheti. Úgy döntöttünk, hogy ez a teljesítménybeli javulás megéri a változást, mivel a korábbi viselkedéstől való függés hatása alacsony.
Szórás a következőben: Measure-Object
A kimenet mostantól Measure-Object
tartalmaz egy tulajdonságot StandardDeviation
.
Get-Process | Measure-Object -Property CPU -AllStats
Count : 308
Average : 31.3720576298701
Sum : 9662.59375
Maximum : 4416.046875
Minimum :
StandardDeviation : 264.389544720926
Property : CPU
Get-PfxCertificate -Password
Get-PfxCertificate
most már rendelkezik a Password
paraméterrel, amely egy SecureString
. Ez lehetővé teszi, hogy nem interaktív módon használja:
$certFile = '\\server\share\pwd-protected.pfx'
$certPass = Read-Host -AsSecureString -Prompt 'Enter the password for certificate: '
$certThumbPrint = (Get-PfxCertificate -FilePath $certFile -Password $certPass ).ThumbPrint
A more
függvény eltávolítása
Korábban a PowerShell egy olyan függvényt szállított a Windowsba, amelyet burkoltnak neveztek more
more.com
. Ezt a függvényt eltávolítottuk.
Emellett a help
függvény windowsosra more.com
változott, vagy a rendszer nem Windows-platformokon megadott $env:PAGER
alapértelmezett lapozójára.
cd DriveName:
most visszaadja a felhasználókat a meghajtó aktuális munkakönyvtárába
Korábban a PSDrive használatával Set-Location
vagy cd
visszatérésével a felhasználók az adott meghajtó alapértelmezett helyére küldték a felhasználókat. A rendszer a felhasználókat a munkamenet utolsó ismert aktuális munkakönyvtárába küldi.
cd -
visszakerül az előző könyvtárba
C:\Windows\System32> cd C:\
C:\> cd -
C:\Windows\System32>
Vagy Linuxon:
PS /etc> cd /usr/bin
PS /usr/bin> cd -
PS /etc>
Is, cd
és cd --
váltson a $HOME
.
Update-Help
nem rendszergazdaként
A népszerű igények szerint Update-Help
már nem kell rendszergazdaként futtatni. Update-Help
mostantól alapértelmezés szerint egy felhasználó által hatókörrel rendelkező mappába menti a súgót.
Where-Object -Not
Ha paramétert -Not
ad Where-Object
hozzá, szűrheti a folyamat objektumait egy tulajdonság nemlétezésére, vagy null/üres tulajdonságértékre.
Ez a parancs például az összes olyan szolgáltatást visszaadja, amely nem rendelkezik függő szolgáltatásokkal:
Get-Service | Where-Object -Not DependentServices
Webes parancsmagok módosítása
A webes parancsmagok mögöttes .NET API-ja a következőre System.Net.Http.HttpClient
módosult: . Ez a módosítás számos előnnyel jár. Ez a változás azonban az Internet Explorerrel való együttműködés hiányával együtt számos kompatibilitástörő változást Invoke-WebRequest
Invoke-RestMethod
eredményezett.
Invoke-WebRequest
Mostantól csak az egyszerű HTML-elemzéseket támogatja.Invoke-WebRequest
mindig visszaad egy objektumotBasicHtmlWebResponseObject
. AParsedHtml
rendszer eltávolította a tulajdonságokat ésForms
a tulajdonságokat.BasicHtmlWebResponseObject.Headers
az értékek most márString[]
nemString
.BasicHtmlWebResponseObject.BaseResponse
mostantól objektum.System.Net.Http.HttpResponseMessage
- A
Response
webes parancsmag kivételeinek tulajdonsága mostantólSystem.Net.Http.HttpResponseMessage
objektum. - A szigorú RFC-fejléc elemzése mostantól alapértelmezett a és
-UserAgent
a-Headers
paraméter esetében. Ez megkerülhető a-SkipHeaderValidation
. file://
ésftp://
az URI-sémák már nem támogatottak.System.Net.ServicePointManager
beállítások már nem teljesülnek.- Jelenleg nincs elérhető tanúsítványalapú hitelesítés a macOS rendszeren.
-Credential
Ha egy URI-t használhttp://
, az hibát fog eredményezni. Használjon URI-thttps://
, vagy adja meg a-AllowUnencryptedAuthentication
paramétert a hiba letiltásához.-MaximumRedirection
Most megszűnő hibát okoz, ha az átirányítási kísérletek túllépik a megadott korlátot ahelyett, hogy az utolsó átirányítás eredményeit adják vissza.- A PowerShell 6.2-ben a JSON-válaszok alapértelmezett UTF-8 kódolási beállítása módosult. Ha egy JSON-válaszhoz nem ad meg karakterkészletet, az alapértelmezett kódolásnak UTF-8/RFC 8259-nek kell lennie.
- A válaszok alapértelmezett kódolása UTF-8 értékre
application-json
van állítva - Paraméter hozzáadva
-SkipHeaderValidation
a szabványoknak nem megfelelő fejlécek engedélyezéséhezContent-Type
- Paraméter hozzáadva
-Form
az egyszerűsítettmultipart/form-data
támogatás támogatásához - A relációs kulcsok megfelelő, kis- és nagybetűkkel nem érzéketlen kezelése
- Hozzáadott
-Resume
paraméter webes parancsmagokhoz
Az Invoke-RestMethod hasznos adatokat ad vissza, ha nem ad vissza adatokat
Amikor egy API csak null
a sztringet adja vissza, Invoke-RestMethod
sztringként "null"
szerializálta $null
. Ez a módosítás kijavítja a logikátInvoke-RestMethod
, hogy megfelelően szerializáljon egy érvényes JSON-literálértéketnull
.$null
A webes parancsmagok figyelmeztetnek, ha -Credential
a rendszer titkosítatlan kapcsolatokon keresztül küldi őket
HTTP használata esetén a rendszer a jelszavakat is tartalmazó tartalmat világos szövegként küldi el. Ez a módosítás alapértelmezés szerint nem engedélyezi ezt, és hibaüzenetet ad vissza, ha a hitelesítő adatok nem biztonságosan vannak átadva. A felhasználók ezt a kapcsolóval -AllowUnencryptedAuthentication
megkerülhetik.
A -OutFile
webes parancsmagok paraméterének használata -LiteralPath
A PowerShell 7.1-től kezdődően a webes parancsmagok OutFile paramétere a LiteralPathhoz hasonlóan működik, és nem dolgoz fel helyettesítő karaktereket.
API-változások
Osztály eltávolítása AddTypeCommandBase
A AddTypeCommandBase
rendszer eltávolította az osztályt Add-Type
a teljesítmény javítása érdekében. Ezt az osztályt csak a Add-Type
parancsmag használja, és nem befolyásolhatja a felhasználókat.
Támogatott nyelvként eltávolítva VisualBasic
a bővítménytípusban
Korábban a parancsmaggal lefordíthatta a Add-Type
Visual Basic-kódot. A Visual Basicet ritkán használták a Add-Type
. Ezt a funkciót eltávolítottuk a PowerShell méretének csökkentése érdekében.
El lett távolítva RunspaceConfiguration
a támogatás
Korábban, amikor egy PowerShell-futtatóteret programozott módon hoz létre az API használatával, használhatja az örökölt RunspaceConfiguration
vagy az újabb InitialSessionState
osztályokat. Ez a módosítás eltávolította a támogatást, RunspaceConfiguration
és csak a támogatást támogatja InitialSessionState
.
CommandInvocationIntrinsics.InvokeScript
argumentumok kötése ahelyett, hogy $input
$args
Egy paraméter helytelen pozíciója miatt az args bemenetként lett átadva args helyett.
Eltávolítás ClrVersion
és BuildVersion
tulajdonságok innen: $PSVersionTable
A ClrVersion
tulajdonság nem $PSVersionTable
hasznos a CoreCLR-ben. A végfelhasználók nem használhatják ezt az értéket a kompatibilitás meghatározásához.
A BuildVersion
tulajdonság a Windows buildverzióhoz volt kötve, amely nem Windows-platformokon érhető el. GitCommitId
A tulajdonság használatával lekérheti a PowerShell pontos buildverzióját.
Unicode-feloldó elemzés implementálása
`u####
vagy `u{####}
átalakítja a megfelelő Unicode-karakterre. A konstans `u
kimenetéhez lépjen ki a háttérből: ``u
.
Paraméterkötési probléma a PS-függvényekben ValueFromRemainingArguments
ValueFromRemainingArguments
Most az értékeket tömbként adja vissza egyetlen érték helyett, amely maga is tömb.
CommandTypes.Workflow
AWorkflowInfoCleaned
A System.Management.Automation használatával CommandTypes.Workflow
és WorkflowInfo
használatával kapcsolatos kód törlése.
Ezek a kisebb kompatibilitástörő változások elsősorban a súgószolgáltató kódját érintik.
- Módosítsa a nyilvános konstruktorokat
WorkflowInfo
belsőre. Már nem támogatjuk a munkafolyamatot, ezért érdemes nem engedélyezni a felhasználók számára a példányok létrehozásátWorkflow
. - Távolítsa el a System.Management.Automation.DebugSource típust, mivel csak munkafolyamat-hibakereséshez használják.
- Távolítsa el a csak munkafolyamat-hibakereséshez használt absztrakt osztály hibakeresőjének
SetParent
túlterhelését. - Távolítsa el a RemotingJobDebugger származtatott osztály túlterhelését
SetParent
.
Nem tördelt eredmény PSObject
a delegáltvá alakításkor ScriptBlock
Ha c ScriptBlock
# környezetben használandó delegált típussá alakul át, az eredmény PSObject
körbefuttatása szükségtelen problémákat okoz:
- Amikor az értéket delegált visszatérési típussá konvertálja, a
PSObject
rendszer lényegében le lesz bontva. Tehát aPSObject
felesleges. - Ha a delegált visszatérési típusa az
object
, akkor a program egy C#-kódbanPSObject
nehezen használható szövegbe burkolva lesz.
A módosítás után a visszaadott objektum az alapul szolgáló objektum.
Támogatás újraküldése
A WinRM-et Unix-platformokon használó PowerShell-remoting (PSRP) használatához NTLM/Egyeztetés vagy Alapszintű hitelesítés szükséges HTTPS-en keresztül. A psRP macOS rendszeren csak az alapszintű hitelesítést támogatja HTTPS-en keresztül. A Kerberos-alapú hitelesítés nem támogatott a windowsos platformokon.
A PowerShell emellett támogatja a PowerShell-remoting (PSRP) használatát SSH-n keresztül minden platformon (Windows, macOS és Linux). További információ: SSH-újraegyezés a PowerShellben.
A PowerShell Direct for Containers először megpróbálja használni pwsh
A PowerShell Direct a PowerShell és a Hyper-V egyik funkciója, amely lehetővé teszi, hogy hálózati kapcsolat vagy más távfelügyeleti szolgáltatás nélkül csatlakozzon Egy Hyper-V virtuális géphez vagy tárolóhoz.
Korábban a PowerShell Direct a tároló beépített Windows PowerShell-példányával csatlakozott. Most a PowerShell Direct először megpróbál csatlakozni a PATH
környezeti változón elérhető bármely lehetőség pwsh.exe
használatával. Ha pwsh.exe
nem érhető el, a PowerShell Direct vissza fog állni a használatba powershell.exe
.
Enable-PSRemoting
mostantól külön újraegyesítési végpontokat hoz létre az előzetes verziókhoz
Enable-PSRemoting
Most két újraegyesítő munkamenet-konfigurációt hoz létre:
- A PowerShell főverziója. Például:
PowerShell.6
. Ez a végpont, amely az alverzió-frissítések között "rendszerszintű" PowerShell 6-munkamenetkonfigurációként használható - Egy verzióspecifikus munkamenet-konfiguráció, például:
PowerShell.6.1.0
Ez a viselkedés akkor hasznos, ha több PowerShell 6-verziót szeretne telepíteni és elérni ugyanazon a gépen.
Emellett a PowerShell előzetes verziói a parancsmag futtatása Enable-PSRemoting
után saját újrakapcsolódó munkamenet-konfigurációkat kapnak:
C:\WINDOWS\system32> Enable-PSRemoting
A kimenet eltérő lehet, ha még nem állította be a WinRM-et.
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.
Ezután külön PowerShell-munkamenetkonfigurációkat láthat a PowerShell 6 előzetes és stabil buildjeihez, valamint az egyes verziókhoz.
Get-PSSessionConfiguration
Name : PowerShell.6.2-preview.1
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : PowerShell.6-preview
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : powershell.6
PSVersion : 6.1
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : powershell.6.1.0
PSVersion : 6.1
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
user@host:port
SSH által támogatott szintaxis
Az SSH-ügyfelek általában támogatják a kapcsolati sztring formátumátuser@host:port
. Mivel az SSH protokollként van hozzáadva a PowerShell-remotinghoz, az alábbi kapcsolati sztring formátumot támogatjuk:
Enter-PSSession -HostName fooUser@ssh.contoso.com:2222
A telemetria csak környezeti változóval tiltható le
A PowerShell alapszintű telemetriai adatokat küld a Microsoftnak az indításkor. Az adatok tartalmazzák az operációs rendszer nevét, az operációs rendszer verzióját és a PowerShell-verziót. Ezek az adatok lehetővé teszik a PowerShell használatát lehetővé tévő környezetek jobb megértését, és lehetővé teszik az új funkciók és javítások rangsorolását.
Ha le szeretné tiltani ezt a telemetriát, állítsa a környezeti változót POWERSHELL_TELEMETRY_OPTOUT
a következőre true
: , yes
vagy 1
. A telemetria letiltásához a továbbiakban nem támogatjuk a fájl DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY
törlését.