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 alapra építve erőfeszítéseink a közösségi problémákra összpontosítottak, és számos fejlesztést és javítást tartalmaztak. Elkötelezettek vagyunk annak biztosítása mellett, hogy a PowerShell stabil és teljesítménnyel rendelkező 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
- Az ARM64 támogatásával frissített telepítőcsomagok az új operációsrendszer-verziókhoz
- 4 új kísérleti funkció és 2 kísérleti funkció, amelyek az általános
- 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 (VÁLTOZÁSNAPLÓ ) 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 lásd a PowerShell-blog közleményé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:
- Automatikus frissítések közvetlenül a Windowsba
- Integrálható más szoftverterjesztési mechanizmusokkal, például Intune és SCCM
Megjegyzés
A rendszerben $PSHOME
tárolt rendszerszintű konfigurációs beállítások 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éséhez 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 rendszerekről és a támogatási életciklusról a PowerShell támogatási életciklusában talál további információ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-es verzióit.
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-újraindítást. Az SSH-alapú újraegyenlítés beállításával kapcsolatos részletekért lásd: PowerShell-újramotálás SSH-n keresztül.
Kísérleti funkciók
A kísérleti funkciókkal kapcsolatos további információkért lásd: Kísérleti funkciók használata.
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, az átalakítás nem használja a kulturális beállításokat a sztringek konvertálásához.A PSSubsystemPluginModel a jövőbeli prediktív IntelliSense beépülő modulok támogatásának alapjait fekteti le.
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 invariáns sztring-összehasonlítások figyelmen kívül hagyják 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
Javítás
$?
, hogy ne legyen,$false
amikor a natív parancs a(z) (#13395) parancsrastderr
írGyakori, hogy
stderr
a natív parancsok nem kívánnak hibajelzést adni. Ezzel a módosítással$?
csak akkor lesz 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)Gyakori, hogy
stderr
a natív parancsok nem kívánnak hibajelzést adni. 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
bekapcsolva-UnixTimeSeconds
Get-Date
a Unix időbevitelének engedélyezéséhez (#13084) (Köszönjük @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 1970. január 1., 0:00:00 óta másodpercben megadott egész értéket 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 értékre konvertál.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AM
Engedélyezze, hogy az explicit módon megadott elnevezett paraméter felülírja ugyanazt a hashtable splattingból (#13162)
Ezzel a módosítással a névvel ellátott paraméterek a splattingból a paraméterlista végére kerülnek, így az összes explicit módon megadott elnevezett paraméter kötése után meg lesznek kötve. Az egyszerű függvények paraméterkötése nem jelez hibát, ha egy megadott nevű paraméter nem található. Az ismeretlen nevű 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 sorrendjét a fájlban$args
.Például:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }
Az előző viselkedésben a MyPath nem kötött
-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 a rendszer
@hash
áthelyezi az argumentumokat az argumentumlista végére. A MyPath lesz a lista első argumentuma, ezért a következőhöz-Path
van kötve: .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önjük @yecril71pl!)Oldja fel a munkakönyvtárat literál elérési útként
Start-Process
, ha nincs megadva (#11946) (Köszönjük @NoMoreFood!)A webes parancsmagok paraméterének létrehozása
-OutFile
-LiteralPath
(#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 létrehoz-UseNewEnvironment
egy új alapértelmezett folyamatkörnyezetet (#10830) (Köszönjük @iSazonov!)Ne törje körbe a
PSObject
visszaadott eredményt, amikor meghatalmazottká konvertálScriptBlock
(#10619)Ha egy
ScriptBlock
delegált típussá alakul át, amelyet c# környezetben kell használni, az eredményPSObject
körbefuttatása felesleges problémákat okoz:- Amikor az érték delegált visszatérési típussá lesz konvertálva, a
PSObject
rendszer lényegében le lesz bontva. Tehát aPSObject
felesleges. - Ha a delegált visszatérési típusa ,
object
akkor a C#-kódbanPSObject
nehezen használhatóvá válik.
A módosítás után a visszaadott objektum az alapul szolgáló objektum.
- Amikor az érték delegált visszatérési típussá lesz konvertálva, a