Novinky v PowerShellu 7.1
11. listopadu 2020 jsme oznámili obecnou dostupnost PowerShellu 7.1. Naše úsilí zaměřené na komunitní problémy, které vychází ze základů vytvořených v PowerShellu 7.0, a zahrnuje řadu vylepšení a oprav. Snažíme se zajistit, aby PowerShell zůstal stabilní a výkonný.
PowerShell 7.1 obsahuje následující funkce, aktualizace a zásadní změny.
- PSReadLine 2.1.0, který zahrnuje prediktivní IntelliSense
- PowerShell 7.1 byl publikován v Microsoft Storu.
- Instalační balíčky aktualizované pro nové verze operačního systému s podporou ARM64
- 4 nové experimentální funkce a 2 experimentální funkce propagované do hlavního proudu
- Několik zásadníchzměnch
Úplný seznam změn najdete v protokolu CHANGELOG v úložišti GitHub.
PSReadLine 2.1.0
PowerShell 7.1 obsahuje také PSReadLine 2.1.0. Tato verze zahrnuje prediktivní IntelliSense. Další informace o funkci Prediktivní IntelliSense najdete v oznámení v blogu PowerShellu.
Instalační balíček Microsoft Storu
PowerShell 7.1 byl publikován v Microsoft Storu. Verzi PowerShellu najdete na webu Microsoft Store nebo v aplikaci Store ve Windows.
Výhody balíčku Microsoft Storu:
- Automatické aktualizace integrované přímo do Windows
- Integruje se s dalšími mechanismy distribuce softwaru, jako jsou Intune a SCCM
Poznámka
Všechna nastavení konfigurace na úrovni systému uložená v $PSHOME
souboru nelze změnit. To zahrnuje konfiguraci WSMAN. Tím zabráníte vzdáleným relacím v připojení k instalacím PowerShellu založenému na Storu. Podporují se konfigurace na úrovni uživatele a vzdálené komunikace SSH.
Další instalační programy
Další aktuální informace o podporovaných operačních systémech a životním cyklu podpory najdete v životním cyklu podpory PowerShellu.
Projděte si pokyny k instalaci upřednostňovaného operačního systému:
PowerShell 7.1 navíc podporuje verze ARM32 a ARM64 debianu, Ubuntu a ARM64 Alpine Linux.
Komunita sice oficiálně nepodporuje, ale také poskytuje balíčky pro Arch a Kali Linux.
Poznámka
Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine a Arm v současné době nepodporují vzdálené komunikace WinRM. Podrobnosti o nastavení vzdálené komunikace založené na SSH najdete v tématu Vzdálené komunikace PowerShellu přes SSH.
Experimentální funkce
Další informace o experimentálních funkcích najdete v tématu Používání experimentálních funkcí.
V této verzi jsou nyní hlavní funkce následujících experimentálních funkcí:
V této verzi byly přidány následující experimentální funkce:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- PowerShell 7.1 rozšiřuje tuto experimentální funkci a přidá parametr Runspace do všech
*-PSBreakpoint
rutin. Parametr Runspace určuje objekt Runspace pro interakci se zarážky v zadaném prostoru runspace.
- PowerShell 7.1 rozšiřuje tuto experimentální funkci a přidá parametr Runspace do všech
PSNativePSPathResolution – Tato funkce umožňuje předávat cesty zprostředkovatele PowerShellu nativním příkazům, které nepodporují syntaxi cesty PowerShellu.
PSCultureInvariantReplaceOperator - Pokud levý operand v
-replace
příkazu operátoru není řetězec, tento operand se převede na řetězec. S povolenou funkcí převod nepoužívá nastavení jazykové verze pro převod řetězců.PSSubsystemPluginModel představuje základ podpory budoucích modulů plug-in Prediktivní IntelliSense.
Zásadní změny a vylepšení
Chování porovnání řetězců se změnilo v .NET 5.0
PowerShell 7.1 je založený na .NET 5.0, který zavedl následující zásadní změnu:
Od verze .NET 5.0 ignorují porovnání invariantních řetězců netisknutelných řídicích znaků.
Například následující dva řetězce jsou považovány za identické:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"
True
Oprava
$?
, aby nebyla$false
při zápisu nativního příkazu dostderr
aplikace (#13395)Nativní příkazy se dají zapisovat
stderr
bez úmyslu indikovat selhání. Při této změně$?
je nastaven$false
pouze v případě, že nativní příkaz má také nenulový ukončovací kód. Tato změna nesouvisí s experimentální funkcíPSNotApplyErrorActionToStderr
.Nemá
$ErrorActionPreference
vliv nastderr
výstup nativních příkazů (#13361)Nativní příkazy se dají zapisovat
stderr
bez úmyslu indikovat selhání. Při této změněstderr
se výstup stále zaznamenává v objektech ErrorRecord , ale modul runtime se už použije$ErrorActionPreference
, pokud chybaZáznam pochází z nativního příkazu.Přejmenujte na
-UnixTimeSeconds
zapnuto-FromUnixTime
Get-Date
, aby bylo možné povolit vstup času unixu (#13084) (Díky@aetos382!)Parametr
-FromUnixTime
byl přidán během verze 7.1-preview.2. Parametr byl přejmenován tak, aby lépe odpovídal datovému typu. Tento parametr přebírá celočíselnou hodnotu, která představuje v sekundách od 1. ledna 1970, 0:00:00.Tento příklad převede čas unixu (reprezentovaný počtem sekund od roku 1970-01-01 01 00:00:00) na DateTime.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AM
Povolit explicitně zadaný pojmenovaný parametr nahradit stejný parametr z hodnot hashtable splatting (#13162)
Při této změně se pojmenované parametry z splattingu přesunou na konec seznamu parametrů, aby byly vázané po všech explicitně zadaných pojmenovaných parametrech. Vazby parametrů pro jednoduché funkce nevyvolají chybu, pokud zadaný pojmenovaný parametr nebyl nalezen. Neznámé pojmenované parametry jsou vázané na
$args
parametr jednoduché funkce. Přesunutí splattingu na konec seznamu argumentů změní pořadí, ve$args
které se parametry zobrazí .Příklad:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }
V předchozím chování není MyPath vázán,
-Path
protože je to třetí argument v seznamu argumentů. ## Takže skončí vycpaný do "$args" spolu sBlah = "World"
PS> $hash = @{ Name = "Hello"; Blah = "World" } PS> SimpleTest @hash "MyPath" Name: Hello; Path: ; Args: -Blah: World MyPath
Při této změně se argumenty ze
@hash
seznamu argumentů přesunou na konec seznamu argumentů. MyPath se stane prvním argumentem v seznamu, takže je vázán na-Path
.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: World
Nastavení parametru
-Qualifier
přepínače není poziční proSplit-Path
(#12960) (Díky @yecril71pl!)Řešení pracovního adresáře jako cesty literálu,
Start-Process
pokud není zadán (#11946) (Děkujeme) @NoMoreFood!)Vytvoření
-OutFile
parametru ve webových rutinách tak, aby fungoval jako-LiteralPath
(#11701) (Díky @iSazonov!)Oprava vazby parametrů řetězce pro
BigInteger
číselné literály (#11634) (Díky @vexx32!)Ve Windows
Start-Process
vytvoří procesové prostředí se všemi proměnnými prostředí z aktuální relace pomocí-UseNewEnvironment
vytvoření nového výchozího prostředí procesu (#10830) (Děkujeme) @iSazonov!)Nezalamujte výsledek
PSObject
vrácení při převodu na delegátaScriptBlock
(#10619)ScriptBlock
Při převodu na typ delegáta, který se má použít v kontextu jazyka C#, zabalte výsledek doPSObject
nepotřebných problémů:- Když se hodnota převede na návratový typ delegáta, v
PSObject
podstatě se rozbalí. Takže jePSObject
nepotřebný. - Když je
object
návratový typ delegáta, zabalí se doPSObject
kódu jazyka C#.
Po této změně je vrácený objekt podkladovým objektem.
- Když se hodnota převede na návratový typ delegáta, v