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.
A Windows PowerShell 5.1 a .NET-keretrendszer 4.5-ös verziójára épül. A PowerShell 6.0 kiadásával a PowerShell nyílt forráskódú projektté vált, amely a .NET Core 2.0-ra épül. A .NET-keretrendszerről a .NET Core-ra való áttéré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ét az egyes verziók Újdonságok cikkekben találja.
- 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ének egy 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. További információ a .NET Core változásairól: .NET-keretrendszerből .NET Core-való migrálás kompatibilitástörő változásai.
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-re alapul
- PowerShell 6.0 – A .NET Core 2.0-ra épül
A .NET Standard 2.0 megjelenésével a PowerShell számos hagyományos Windows PowerShell-modult képes módosítás nélkül betölteni. 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 New-Object
vagy a [type]::new()
metódus használatával.
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ő Split()
metódus túlterheléseit 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ő Split()
metódus túlterheléseit 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
PowerShell-munkafolyamat a Windows PowerShell olyan funkciója, amely a Windows Workflow Foundation (WF) alapul, és lehetővé teszi robusztus futtatási könyvek 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
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
parancsmagok eltávolítva lettek
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 *-EventLog
parancsmagok el lettek távolítva a PowerShellből.
Get-WinEvent
és New-WinEvent
érhetők el 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
Get-Help
ShowWindow paramétere
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-katalógusban. További információkért tekintse meg a PowerShell-csapat blogjának bejelentését.
Végrehajtható PowerShell-módosítások
Átnevezve powershell.exe
-ról pwsh.exe
-ra
A PowerShell bináris neve powershell(.exe)
-ről pwsh(.exe)
-ra módosult. 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.
A powershell.exe
pwsh(.exe)
további módosításai:
- Az első pozícióparamétert
-Command
-ről-File
-ra módosította. Ez a módosítás kijavítja a#!
(más néven shebang) használatát olyan PowerShell-szkriptekben, amelyeket nem PowerShell-rendszerhéjakból hajtanak végre nem Windows-platformokon. Ez azt is jelenti, hogy-File
megadása nélkül futtathat olyan parancsokat, mintpwsh foo.ps1
vagypwsh fooScript
. Ehhez a módosításhoz azonban kifejezetten meg kell adnia-c
vagy-Command
, amikor olyan parancsokat próbál futtatni, mint apwsh.exe -Command Get-Command
. -
pwsh
elfogadja a-i
(vagy-Interactive
) kapcsolót egy interaktív felület jelzésére. Ez lehetővé teszi, hogy a PowerShell alapértelmezett rendszerhéjként használható legyen a Unix-platformokon. - A
pwsh.exe
-ImportSystemModules
és-PSConsoleFile
paraméterek el lettek távolítva. - A
pwsh -Version
és a beépített súgó módosítása apwsh.exe
más natív eszközökhöz való igazításához. - Érvénytelen argumentum hibaüzenetek
-File
,-Command
és kilépési kódok esetében, amelyek összhangban állnak a Unix szabványaival - Hozzáadta
-WindowStyle
paramétert a Windowson. 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
Korábban a pwsh.exe
használata PowerShell-szkriptek futtatásához -File
nem biztosított lehetőséget a $true
/$false
paraméterértékként való átadására. Támogatást adtak hozzá a $true
,/,$false
értékekhez, amikor azokat paraméterekként értelmezik. 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 UseWindowsPowerShellImport-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ázattalál.
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 PowerShell 7 legújabb frissítéseit fogja megkapni a hagyományos Windows Update (WU) felügyeleti folyamatában, függetlenül attól, hogy ez a Vállalati Windows Update, a WSUS, az SCCM vagy az interaktív WU párbeszédpanel a Beállításokban.
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álasztja -
0
– Ne iratkozzon fel a frissítésekre a Microsoft Update vagy a WSUS használatával
-
ENABLE_MU
-
1
(alapértelmezett) – A Microsoft Update automatikus frissítése vagy a Windows Update használata mellett dönt -
0
– Ne használja a Microsoft Update automatikus frissítéseit vagy a Windows Update-et
-
Motorváltozások
Támogassa a PowerShell-t, mint alapértelmezett Unix-rendszerhéjat
Unix alatt szokás, hogy a shell-ek elfogadják a -i
-t egy interaktív shell esetében, és sok eszköz erre a viselkedésre számít (példáulscript
, amikor a PowerShellt állítják be alapértelmezett shell-ként), és a shell-t a -i
kapcsolóval hívják meg. Ez a változás azért okozza a törést, mert a korábban használt -i
rövidítésként is megfelelt -InputFormat
-nek, amit most -in
-re kell cserélni.
Egyéni beépülő modulok
A PowerShell snap-in bővítmények a PowerShell modulok elődjei, amelyek nem váltak népszerűvé 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 többé nem támogatjuk az egyéni beépülő modulokat a PowerShellben.
Kísérleti funkciójelzők
A PowerShell 6.2 támogatja kísérleti funkciók. 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ási problémákat okozó változtatásokat a kialakítás fejlődésével.
A Get-ExperimentalFeature
használatával lekérheti az elérhető kísérleti funkciók listáját. Ezeket a funkciókat engedélyezheti vagy letilthatja 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 modulnak a GAC-ban volt a szerelvénye, a szerelvényt a GAC-ból töltöttük be, mielőtt megpróbáltuk volna 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 Mandatory
paraméter, ValidateNotNull
és ValidateNotNullOrEmpty
attribútumok esetében hagyja ki a null elemet annak ellenőrzéséhez, hogy a gyűjtemény elemtípusa értéktípus-e.
$?
megőrzése ParenExpression, SubExpression és ArrayExpression esetében
Ez a pull kérés megváltoztatja az alprogramvonalak (...)
, a részexpressziók $(...)
és a tömbkifejezések @()
fordításának módját, úgy hogy a $?
ne legyen automatikusan igaz. Ehelyett a $?
értéke a végrehajtott folyamat vagy utasítások eredményétől függ.
Javítsa ki $?
-t, hogy ne legyen $false
, amikor egy natív parancs ír a következőre: stderr
$?
nincs beállítva $false
-re, amikor a natív parancs stderr
-re ír. Gyakori, hogy a natív parancsok a stderr
-ra írnak anélkül, hogy szándékukban állna hibára utalni.
$?
csak akkor van beállítva $false
-re, ha a natív parancs nem nulla kilépési kóddal rendelkezik.
Az $ErrorActionPreference
ne befolyásolja stderr
natív parancsok kimenetét
Gyakran előfordul, hogy a natív parancsok nem szándékosan jeleznek hibát, amikor írnak stderr
-ra. Ezzel a módosítással a stderr
kimenet továbbra is rögzítve lesz a ErrorRecord objektumokban, de a futtatókörnyezet már nem alkalmazza a $ErrorActionPreference
, ha a ErrorRecord natív parancsból származik.
$OutputEncoding
módosítása az ASCII helyett UTF-8 NoBOM
kódolás használatára
Az előző kódolás, az ASCII (7 bites) bizonyos esetekben helytelenül változtatná meg a kimenetet. A UTF-8 NoBOM
alapértelmezettként való beállítása megőrzi a Unicode-kimenetet a legtöbb eszköz és operációs rendszer által támogatott kódolással.
A -Encoding
paraméter típusának System.Text.Encoding
típusra változtatásával rendelkező parancsmagok egyesítése
A -Encoding
érték Byte
el lett távolítva a Fájlrendszer-szolgáltató parancsmagjaiból. Egy új paraméter (-AsByteStream
) használatával megadhatja, hogy bemenetként bájtfolyamra van-e szükség, vagy hogy a kimenet bájtos adatfolyam legyen.
A New-ModuleManifest
kódolását változtassa UTF8NoBOM
-re nem Windows-platformokon
Korábban New-ModuleManifest
psd1
jegyzékfájlokat hozott létre az UTF-16-ban a BOM használatával, ami problémát okoz a Linux-eszközök számára. Ez a kompatibilitástörő változás a New-ModuleManifest
kódolását UTF -nek (nem BOM- nak) módosítja a nem Windows-platformokon.
AllScope
eltávolítása a legtöbb alapértelmezett aliasból
A hatókör létrehozásának felgyorsításához AllScope
el lett távolítva a legtöbb alapértelmezett aliasból. Az AllScope
fenntartva maradt néhány gyakran használt alias számára, ahol a keresés gyorsabb volt.
-Verbose
és -Debug
már nem bírálja felül $ErrorActionPreference
Korábban, ha -Verbose
vagy -Debug
volt megadva, az felülírta a $ErrorActionPreference
viselkedését. Ezzel a változással -Verbose
és -Debug
már nem befolyásolják a $ErrorActionPreference
viselkedését.
A -Debug
paraméter Inquirehelyett a Folytatás $DebugPreference
.
Törekedjünk arra, hogy a $PSCulture
következetesen tükrözze a munkamenet közbeni kultúraváltozásokat.
A Windows PowerShellben gyorsítótárazzák az aktuális kultúraértéket, ami azt eredményezheti, hogy az érték nincsen szinkronban, ha a kultúra a munkamenet indítása után változik meg. Ez a gyorsítótárazási viselkedés a PowerShell Core-ban javítva van.
Az explicit módon megadott megnevezett paraméter felülírja ugyanazt a paramétert a hashtable splatting technikából.
Ezzel a módosítással a névvel ellátott paramétereket a splatting technikával a paraméterlista végére helyezzük, így azok az összes explicit módon megadott elnevezett paraméter után lesznek kötve. 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 egyszerű függvény $args
paraméteréhez vannak kötve. Az argumentumlista végére helyezve a splattinget megváltozik a paraméterek megjelenési sorrendje $args
.
Például:
function SimpleTest {
param(
$Name,
$Path
)
"Name: $Name; Path: $Path; Args: $args"
}
Az előző viselkedésben a MyPath nem -Path
, mert ez a harmadik argumentum az argumentumlistában. Végül így kerül be a "$args" mezőbe, együtt a Blah = "World"
-val.
PS> $hash = @{ Name = "Hello"; Blah = "World" }
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: ; Args: -Blah: World MyPath
Ezzel a módosítással a @hash
argumentumai az argumentumlista végére kerülnek.
MyPath lesz az első argumentum a listában, így hozzá lesz rendelve -Path
.
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: MyPath; Args: -Blah: World
Nyelvi változások
Null-egyesítési operátor ??
A null-egyesítő operátor ??
a bal oldali operandus értékét adja vissza, ha az nem null.
Ellenkező esetben a jobb oldali operandust értékeli ki, és visszaadja az eredményt. A ??
operátor nem értékeli 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-egyesítő hozzárendelő operátor ??=
A null-egyesítő hozzárendelési operátor ??=
a jobb oldali operandus értékét csak akkor rendeli hozzá a bal oldali operandushoz, ha a bal oldali operandus értéke null. A ??=
operátor nem értékeli 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
Megjegyzé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, ?[]
, műveletet az operandusra, ha az operandus nem null értékű; ellenkező esetben null értéket ad vissza.
Mivel a PowerShell lehetővé teszi, hogy ?
része legyen a változó nevének, a változónév formális specifikációja szükséges ezen operátorok használatához. Ezért {}
kell használni az olyan változónevek köré, mint a ${a}
, vagy ha ?
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 tagok nevét PropName.
$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]
Megjegyzés
A ${<name>}
változónévszintaxisát nem szabad összekeverni a $()
alexpressziós operátorral. További információt a about_Variablesváltozónév szakaszában talál.
&
operátor hozzáadva a feladatvezérléshez
Ha a &
jelet a csővezeték végére helyezi, akkor a csővezeték PowerShell-feladatként fut. Ha egy folyamatláncot háttérbe helyeznek, visszaad egy feladatobjektumot. Ha a folyamat feladatként fut, a feladat kezeléséhez a szabványos *-Job
parancsmagok mindegyike használható. 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 a PSCustomObject
Új metódusokat és tulajdonságokat adtunk hozzá PSCustomObject
.
PSCustomObject
mostantól egy Count
/Length
tulajdonságot is tartalmaz, mint más objektumok.
$PSCustomObject = [pscustomobject]@{foo = 1}
$PSCustomObject.Length
1
$PSCustomObject.Count
1
Ez a munka ForEach
és Where
metódusokat is tartalmaz, amelyek lehetővé teszik PSCustomObject
elemek üzemeltetését és szűrését:
$PSCustomObject.ForEach({$_.foo + 1})
2
$PSCustomObject.Where({$_.foo -gt 0})
foo
---
1
Konvertálás PSMethodról meghatalmazottra
Átalakíthat egy PSMethod
-t delegálttá. Ez lehetővé teszi, hogy például az PSMethod
[M]::DoubleStrLen
-et delegációs értékként adja át [M]::AggregateString
-be:
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 kultúrafüggetlen sztring-összehasonlítások figyelmen kívül hagyják a nem nyomtatható vezérlőkaraktereket.
A következő két karakterlánc 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 Remove-Alias parancsmag eltávolít egy aliast az aktuális PowerShell-munkamenetből. A parancsmag a PowerShell 6.0-ban lett bevezetve.
Új parancsmag Remove-Service
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 a 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 Join-String parancsmag
A Join-String parancsmag egyetlen karakterláncba egyesíti a csővezeték tárgyakat. 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ézettel javítja a hibaüzenetek megjelenítését az interaktív és szkripthibák olvashatóságának javítása érdekében, ConciseView. A nézetek a $ErrorView
beállítási változóval 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 ConciseView. Az előző alapértelmezett nézet 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
Megjegyzés
Új tulajdonság ErrorAccentColor kerül hozzáadásra a $Host.PrivateData
-hoz, hogy támogassa a hibaüzenet jelölőszínének módosítását.
Az új Get-Error
parancsmag részletes áttekintést nyújt a teljesen minősített hibaról, amikor 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 $Error
változó 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óért lásd: Get-Error.
A parancsmag módosításai
Párhuzamos végrehajtás hozzáadva ForEach-Object
A PowerShell 7.0-tól kezdve a gyűjtemény elemeit iteráló ForEach-Object
parancsmag beépített párhuzamot tartalmaz 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 adott időpontban párhuzamosan futó szkriptblokkok számát. Az alapértelmezett érték 5.
Használja a $_
változót a szkriptblokk aktuális bemeneti objektumának megjelenítéséhez. A Using:
hatókör-módosítóval változóhivatkozásokat adhat át a futó szkriptblokknak.
További információ: ForEach-Object.
A windowsos kompatibilis beépített modulok system32
ellenőrzése
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.
Amikor a PowerShell elindul, automatikusan tartalmazza a $windir\System32
-t a PSModulePath
környezeti változó részeként. Azonban csak akkor teszi elérhetővé a modulokat Get-Module
és Import-Module
, ha CompatiblePSEdition
kompatibilisként van megjelölve a Core
-al.
Ezt a viselkedést felülbírálhatja az összes modul megjelenítéséhez a -SkipEditionCheck
kapcsolóparaméter használatával.
Egy PSEdition
tulajdonságot is hozzáadtunk a tábla kimenetéhez.
-lp
alias az összes -LiteralPath
paraméterhez
Létrehoztunk egy standard paraméter aliast -lp
az összes beépített PowerShell-parancsmaghoz, amely rendelkezik -LiteralPath
paraméterrel.
Javítsa ki Get-Item -LiteralPath a*b
-t, ha a*b
valójában nem létezik, hogy hibát adjon vissza.
Korábban, ha -LiteralPath
-nak adott helyettesítő karakter ugyanúgy kezelték, mint -Path
-et, és ha a helyettesítő karakter nem talált fájlokat, akkor észrevétlenül kilépett. A helyes viselkedésnek az kell lennie, hogy a -LiteralPath
literálként viselkedjen, ezért ha a fájl nem létezik, akkor hibaüzenetet kell kiadnia. A módosítás a -Literal
által használt helyettesítő karaktereket konstansként kezeli.
A munkakönyvtárat állítsuk be az aktuális könyvtárra a Start-Job
A Start-Job
parancsmag most az aktuális könyvtárat használja az új feladat munkakönyvtáraként.
Távolítsa el a -Protocol
elemet a *-Computer
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 távoli eléréshez. A következő parancsmagok csak a WSMAN távoli elérést támogatják:
Rename-Computer
Restart-Computer
Stop-Computer
-ComputerName
eltávolítása *-Service
parancsmagokból
A PSRP konzisztens használatának ösztönzése érdekében a -ComputerName
paraméter el lett távolítva *-Service
parancsmagokból.
Kijavítottuk Get-Content -Delimiter
, hogy ne szerepeljen a határoló a visszaadott sorokban
Korábban a Get-Content -Delimiter
használata során a 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.
A Format-Hex
módosítása
A -Raw
paraméter mostantól "no-op" (mivel semmit sem tesz). 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 Get-ComputerInfo tulajdonságnévben
BiosSerialNumber
BiosSeralNumber
hibásan lett elírva, és a helyes helyesírásra módosult.
Get-StringHash
és Get-FileHash
parancsmagok hozzáadása
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ést adjon hozzá a Get-*
parancsmagokhoz, amikor $null értéket ad át, hogy hiba helyett az összes objektumot adja vissza.
A $null
az alábbiak bármelyikének való átadása hibát jelez:
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
Támogatás hozzáadása a W3C kiterjesztett naplófájlformátumhoz a Import-Csv
-ban
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
pstypenames
alkalmaz az importáláskor, ha a típusadatok megtalálhatók a CSV-ben
Korábban a ConvertFrom-Csv
importált TypeInformation
Export-Csv
használatával exportált objektumok nem őrizték meg a típusadatokat. Ez a módosítás hozzáadja a típusadatokat pstypenames
taghoz, ha elérhetők a CSV-fájlból.
-NoTypeInformation
az alapértelmezett beállítás Export-Csv
-en.
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.
A -IncludeTypeInformation
használatával megtarthatja az előző viselkedést.
*
használatát engedélyezni a Remove-Item
beállításjegyzék elérési útjában
Korábban, ha -LiteralPath
helyettesítő karaktert kapott, ugyanúgy kezelte, mint -Path
, és ha a helyettesítő karakter nem talált fájlokat, akkor csendben kilépett. A helyes működésnek az kell lennie, hogy -LiteralPath
literál, ezért ha a fájl nem létezik, akkor hibát kell jeleznie. A változás az, hogy a -Literal
által használt helyettesítő karaktereket mint konstansokat kezeli.
Group-Object most rendezi a csoportokat
A teljesítményjavítás részeként a Group-Object
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 Measure-Object
A Measure-Object
kimenete mostantól tartalmaz egy StandardDeviation
tulajdonságot.
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 SecureString
-t fogad. 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 more
nevű függvényt tartalmazott a Windowsban, amely more.com
-et burkolt. Ez a függvény most el lett távolítva.
A help
függvény megváltozott, hogy Windows rendszeren a more.com
-et használja, vagy nem Windows rendszereken a $Env:PAGER
által megadott alapértelmezett lapozót.
cd DriveName:
most visszaadja a felhasználókat a meghajtó aktuális munkakönyvtárába
Korábban a Set-Location
vagy cd
használata a felhasználókat az adott PSDrive alapértelmezett helyére küldte vissza. A rendszer a felhasználókat a munkamenet utolsó ismert aktuális munkakönyvtárába küldi.
cd -
visszatér az előző könyvtárhoz
C:\Windows\System32> cd C:\
C:\> cd -
C:\Windows\System32>
Vagy Linuxon:
PS /etc> cd /usr/bin
PS /usr/bin> cd -
PS /etc>
Emellett cd
és cd --
$HOME
-vá változnak.
Update-Help
nem rendszergazdaként
A népszerű igények szerint a 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 hozzáadja a -Not
paramétert a Where-Object
-hez, szűrhet egy objektumot a folyamat során a 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 meg lett változtatva System.Net.Http.HttpClient
-ra. 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 eredményezett Invoke-WebRequest
és Invoke-RestMethod
belül.
-
Invoke-WebRequest
mostantól csak az alapszintű HTML-elemzést támogatja.Invoke-WebRequest
mindig egyBasicHtmlWebResponseObject
objektumot ad vissza. AParsedHtml
ésForms
tulajdonságok el lettek távolítva. -
BasicHtmlWebResponseObject.Headers
értékek mostString[]
, aString
helyett. -
BasicHtmlWebResponseObject.BaseResponse
mostantólSystem.Net.Http.HttpResponseMessage
objektum. - A webes parancsmag kivételeinek
Response
tulajdonsága mostantólSystem.Net.Http.HttpResponseMessage
objektum. - A szigorú RFC-fejléc-elemzés mostantól alapértelmezett a
-Headers
és-UserAgent
paraméterhez. Ez megkerülhető, a-SkipHeaderValidation
segítségével. -
file://
ésftp://
URI-sémák már nem támogatottak. - A
System.Net.ServicePointManager
beállítások már nem érvényesek. - Jelenleg nincs elérhető tanúsítványalapú hitelesítés a macOS rendszeren.
- A
-Credential
használata egyhttp://
URI helyett hibát eredményez. Használjonhttps://
URI-t, vagy adja meg a-AllowUnencryptedAuthentication
paramétert a hiba letiltásához. -
-MaximumRedirection
megszűnő hibát eredményez, 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.
- Az alapértelmezett kódolás UTF-8 értékre van állítva
application-json
válaszokhoz - Hozzáadott
-SkipHeaderValidation
paraméter, amely lehetővé tesziContent-Type
szabványnak nem megfelelő fejlécek engedélyezését -
-Form
paraméter hozzáadva az egyszerűsítettmultipart/form-data
támogatás támogatására - A relációs kulcsok konform, kis- és nagybetűkre érzéketlen kezelése
-
-Resume
paraméter hozzáadva a webes parancsmagokhoz
Invoke-RestMethod hasznos adatokat ad vissza, ha nem ad vissza adatot
Amikor egy API csak null
-t ad vissza, Invoke-RestMethod
sztringgé szerializálta "null"
-t, ahelyett hogy $null
lenne. Ez a módosítás kijavítja az Invoke-RestMethod
logikáját, hogy megfelelően szerializáljon egy érvényes JSON-értéket null
literálként $null
.
A webes parancsmagok figyelmeztetnek, ha -Credential
-t titkosítatlan kapcsolatokon keresztül küldenek.
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 -AllowUnencryptedAuthentication
kapcsolóval megkerülhetik.
Tegyék a webes parancsmagok -OutFile
paraméterét úgy, hogy úgy működjön, mint a -LiteralPath
.
A PowerShell 7.1-től kezdve a webes parancsmagok OutFile paramétere úgy működik, mint LiteralPath, és nem dolgoz fel helyettesítő karaktereket.
API-módosítások
AddTypeCommandBase
osztály eltávolítása
A AddTypeCommandBase
osztály el lett távolítva a Add-Type
-ből 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.
A VisualBasic
el lett távolítva a támogatott nyelvek közül a Add-Type-ben.
Korábban a Visual Basic-kódot a Add-Type
parancsmaggal is fordíthatta le. A Visual Basicet ritkán használták 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
támogatás
Korábban, amikor programozott módon hoz létre PowerShell-futtatóteret az API-val, használhatja az örökölt RunspaceConfiguration
vagy az újabb InitialSessionState
osztályokat. Ez a módosítás eltávolította a RunspaceConfiguration
támogatását, és csak a InitialSessionState
támogatja.
CommandInvocationIntrinsics.InvokeScript
argumentumait $input
-hez köti $args
helyett
Egy paraméter helytelen pozíciója miatt az args bemenetként lett átadva args helyett.
Távolítsa el a ClrVersion
és BuildVersion
tulajdonságokat a $PSVersionTable
-ből.
A $PSVersionTable
ClrVersion
tulajdonsága nem 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 windowsos platformokon érhető el. A GitCommitId
tulajdonság használatával kérje le a PowerShell pontos buildverzióját.
Unicode-feloldó elemzés implementálása
`u####
vagy `u{####}
a rendszer a megfelelő Unicode-karakterre konvertálja. Konstans `u
kimenetéhez lépjen ki a háttérből: ``u
.
Paraméterkötési probléma történt a PS-függvényekben ValueFromRemainingArguments
-val
ValueFromRemainingArguments
mostantól tömbként adja vissza az értékeket egyetlen érték helyett, amely maga is tömb.
A CommandTypes.Workflow
és a WorkflowInfoCleaned
használatának egyszerűsítése
Tisztítsa meg a CommandTypes.Workflow
és WorkflowInfo
használatával kapcsolatos kódot a System.Management.Automation-ban.
Ezek a kisebb kompatibilitástörő változások elsősorban a súgószolgáltató kódját érintik.
- Módosítsa a
WorkflowInfo
nyilvános konstruktorait belsőre. Már nem támogatjuk a munkafolyamatot, ezért érdemes nem engedélyezni, hogy a felhasználókWorkflow
példányokat hozzanak létre. - Távolítsa el a System.Management.Automation.DebugSource típust, mivel csak munkafolyamat-hibakereséshez használatos.
- Távolítsa el a
SetParent
túlterhelését az absztrakt osztályból Hibakereső, amelyet csak munkafolyamat-hibakereséshez használnak. - Távolítsa el a
SetParent
azonos túlterhelését a származtatott RemotingJobDebuggerosztályból.
Ne helyezze keretbe a visszatérési eredményt PSObject
, amikor egy ScriptBlock
-et delegátra alakít.
Ha egy ScriptBlock
delegált típusra van konvertálva, hogy C# környezetben használják, az eredmény PSObject
-be való körbevonása felesleges problémákat okoz.
- Amikor az értéket delegált visszatérési típussá konvertálja, a
PSObject
lényegében le lesz bontva. Tehát aPSObject
szükségtelen. - Ha a delegált visszatérési típusa
object
, akkor egyPSObject
-be van csomagolva, ami megnehezíti a munkát a C# kódban.
A módosítás után a visszaadott objektum az alapul szolgáló objektum.
Távsegítség
A WinRM-et Unix platformokon használó PowerShell-vezérléshez (PSRP) NTLM/Tárgyalás vagy alapszintű hitelesítés szükséges a 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ókért olvassa el a PowerShell SSH-remotingrészt.
A PowerShell Direct for Containers először a "pwsh
"-t próbálja használni.
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 kapcsolódni a PATH
környezeti változóban elérhető pwsh.exe
-t használva. Ha pwsh.exe
nem érhető el, a PowerShell Direct visszaesik a powershell.exe
használatára.
Enable-PSRemoting
mostantól külön távoli végpontokat hoz létre az előzetes verziókhoz
Enable-PSRemoting
most két távoli munkamenet-konfigurációt hoz létre:
- Egy a PowerShell főverziói közül. 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 Enable-PSRemoting
parancsmag futtatása után saját távoli kapcsolati 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ámogatnak egy kapcsolati sztringet user@host:port
formátumban. Az SSH-t protokollként hozzáadtuk a PowerShell távoli hozzáféréséhez, ezzel támogatjuk az alábbi kapcsolati sztring formátumot:
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.
A telemetria kikapcsolásához állítsa a POWERSHELL_TELEMETRY_OPTOUT
környezeti változót true
, yes
vagy 1
értékre. A telemetria letiltásához már nem támogatjuk a fájl törlését DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY
.