A PowerShell 7.1 újdonságai
2020. november 11-én bejelentettük a PowerShell 7.1 általános elérhetőségét. A PowerShell 7.0-s verziójában létrehozott alaprendszerre építve a közösségi problémákra összpontosítottunk, és számos fejlesztést és javítást tartalmaztak. Elkötelezettek vagyunk annak biztosítása mellett, hogy a PowerShell stabil és hatékony platform maradjon.
A PowerShell 7.1 a következő funkciókat, frissítéseket és kompatibilitástörő változásokat tartalmazza.
- PSReadLine 2.1.0, amely tartalmazza a prediktív IntelliSense-t
- A PowerShell 7.1 közzé lett téve a Microsoft Store-ban
- Új operációsrendszer-verziókhoz frissített telepítőcsomagok ARM64-támogatással
- 4 új kísérleti funkció és 2 kísérleti funkció, amelyek általánosan elterjedtek
- Számos kompatibilitástörő változás a használhatóság javítása érdekében
A módosítások teljes listáját a GitHub-adattár CHANGELOG című témakörében találja.
PSReadLine 2.1.0
A PowerShell 7.1 a PSReadLine 2.1.0-t is tartalmazza. Ez a verzió tartalmazza a prediktív IntelliSense-t. A prediktív IntelliSense funkcióval kapcsolatos további információkért tekintse meg a PowerShell-blog bejelentését .
Microsoft Store telepítőcsomag
A PowerShell 7.1 közzé lett téve a Microsoft Store-ban. A PowerShell-kiadás a Microsoft Store webhelyén vagy a Windows Áruház alkalmazásban található.
A Microsoft Store-csomag előnyei:
- A Windows beépített automatikus frissítései
- Integrálható más szoftverterjesztési mechanizmusokkal, például a Intune és az SCCM-mel
Megjegyzés
A rendszerszintű konfigurációs beállítások $PSHOME
nem módosíthatók. Ez magában foglalja a WSMAN-konfigurációt is. Ez megakadályozza, hogy a távoli munkamenetek a PowerShell Áruház-alapú telepítéseihez csatlakozzanak. A felhasználói szintű konfigurációk és az SSH-újraegyenlítés támogatott.
Egyéb telepítők
A támogatott operációs rendszerekkel és a támogatási életciklussal kapcsolatos naprakész információkért tekintse meg a PowerShell támogatási életciklusát.
Ellenőrizze az előnyben részesített operációs rendszer telepítési utasításait:
Emellett a PowerShell 7.1 támogatja a Debian, az Ubuntu és az ARM64 Alpine Linux ARM32 és ARM64 változatait.
Bár hivatalosan nem támogatott, a közösség az Archhoz és a Kali Linuxhoz is biztosított csomagokat.
Megjegyzés
A Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine és Arm jelenleg nem támogatja a WinRM-távelérést. Az SSH-alapú távelérés beállításával kapcsolatos részletekért lásd: PowerShell-távelérés SSH-n keresztül.
Kísérleti funkciók
A kísérleti funkciókról további információt a Kísérleti funkciók használata című témakörben talál.
A következő kísérleti funkciók már alapvető funkciók ebben a kiadásban:
Ebben a kiadásban a következő kísérleti funkciók lettek hozzáadva:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- A PowerShell 7.1 kibővíti ezt a kísérleti funkciót, hogy hozzáadja a Runspace paramétert az összes
*-PSBreakpoint
parancsmaghoz. A Runspace paraméter egy runspace objektumot ad meg, amely a megadott runspace töréspontjaival kommunikál.
- A PowerShell 7.1 kibővíti ezt a kísérleti funkciót, hogy hozzáadja a Runspace paramétert az összes
PSNativePSPathResolution – Ez a funkció lehetővé teszi, hogy a PowerShell-szolgáltató elérési útjait olyan natív parancsoknak adja át, amelyek nem támogatják a PowerShell elérési útjának szintaxisát.
PSCultureInvariantReplaceOperator – Ha egy operátori utasítás bal oldali operandusa
-replace
nem sztring, az operandus sztringgé lesz konvertálva. Ha a funkció engedélyezve van, a konvertálás nem használja a kulturális környezet beállításait a sztringkonvertáláshoz.A PSSubsystemPluginModel fekteti le az alapokat a jövőbeli prediktív IntelliSense beépülő modulok támogatásához.
Kompatibilitástörő változások és fejlesztések
A sztringek összehasonlítási viselkedése megváltozott a .NET 5.0-ban
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ától a kulturális környezetbeli sztringek összehasonlítása figyelmen kívül hagyja a nem nyomtatható vezérlőkarakterek használatát.
A rendszer például a következő két sztringet tekinti azonosnak:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"
True
Ki lett javítva
$?
, hogy ne legyen$false
, amikor a natív parancs a(z) (#13395) fájlbastderr
írA natív parancsok gyakran nem
stderr
jeleznek hibát. Ezzel a módosítással$?
csak akkor van beállítva,$false
ha a natív parancs nem nulla kilépési kóddal is rendelkezik. Ez a változás nem kapcsolódik a kísérleti funkcióhozPSNotApplyErrorActionToStderr
.Ne
$ErrorActionPreference
befolyásoljastderr
a natív parancsok kimenetét (#13361)A natív parancsok gyakran nem
stderr
jeleznek hibát. Ezzel a módosítássalstderr
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.Átnevezés
-FromUnixTime
a-UnixTimeSeconds
UnixGet-Date
időbevitelének engedélyezéséhez (#13084) (köszönet @aetos382!)A
-FromUnixTime
paraméter a 7.1-preview.2 verzióban lett hozzáadva. A paramétert átnevezték, hogy jobban megfeleljen az adattípusnak. Ez a paraméter egy 1970. január 1. és 0:00:00 között másodpercben megadott egész számot vesz fel.Ez a példa egy Unix-időt (amelyet az 1970-01-01 0:00:00 óta eltelt másodpercek száma jelöl) DateTime-ra konvertál.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AM
Engedélyezi, hogy az explicit módon megadott elnevezett paraméter felülírja ugyanazt a kivonattáblázat-halmazból (#13162)
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, így azok az összes explicit módon megadott elnevezett paraméter kötése után lesznek kötve. Az egyszerű függvények paraméterkötése nem jelez 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. A splatting argumentumlista végére való áthelyezése megváltoztatja a paraméterek megjelenési sorrendjét$args
.Például:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }
Az előző viselkedésben a MyPath nincs kötve
-Path
, mert ez az argumentumlista harmadik argumentuma. ## Így végül a "$args" és aBlah = "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 a lista első argumentuma, ezért hozzá van kötve-Path
.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: World
Állítsa a kapcsolóparamétert
-Qualifier
nem pozícióbaSplit-Path
(#12960) (Köszönet @yecril71pl!)A munkakönyvtár feloldása konstans elérési útként
Start-Process
, ha nincs megadva (#11946) (Köszönet @NoMoreFood!)A webes parancsmagok paraméterének létrehozása
-OutFile
a következőhöz hasonlóan-LiteralPath
működik: (#11701) (Köszönjük @iSazonov!)Sztringparaméter-kötés
BigInteger
javítása numerikus literálokhoz (#11634) (Köszönet @vexx32!)Windows
Start-Process
rendszeren létrehoz egy folyamatkörnyezetet az aktuális munkamenet összes környezeti változójával, és-UseNewEnvironment
létrehoz egy új alapértelmezett folyamatkörnyezetet (#10830) (Köszönet @iSazonov!)Delegálttá alakításkor ne törje körbe a visszaadott
ScriptBlock
eredménytPSObject
(#10619)Ha a
ScriptBlock
C#-környezetben használandó delegált típussá alakul át, az eredményPSObject
körbefuttatása felesleges problémákat okoz:- Amikor a delegált visszatérési típusra konvertálja az értéket, a rendszer lényegében feloldja a
PSObject
hozzárendelést. Tehát aPSObject
felesleges. - Ha a delegált visszatérési típus be van
object
csomagolva,PSObject
az megnehezíti a C#-kódban való munkát.
A módosítás után a visszaadott objektum az alapul szolgáló objektum.
- Amikor a delegált visszatérési típusra konvertálja az értéket, a rendszer lényegében feloldja a