Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den 11 november 2020 tillkännagav vi allmän tillgänglighet för PowerShell 7.1. Genom att bygga vidare på grunderna i PowerShell 7.0 fokuserar vi på communityproblem och inkluderar ett antal förbättringar och korrigeringar. Vi är fast beslutna att se till att PowerShell förblir en stabil och högpresterande plattform.
PowerShell 7.1 innehåller följande funktioner, uppdateringar och icke-bakåtkompatibla ändringar.
- PSReadLine 2.1.0, som inkluderar Predictive IntelliSense
- PowerShell 7.1 har publicerats i Microsoft Store
- Installationspaket uppdaterade för nya operativsystemversioner med stöd för ARM64
- 4 nya experimentella funktioner och 2 experimentella funktioner som befordras till mainstream
- Flera icke-bakåtkompatibla ändringar för att förbättra användbarheten
En fullständig lista över ändringar finns i CHANGELOG på GitHub-lagringsplatsen.
PSReadLine 2.1.0
PowerShell 7.1 innehåller även PSReadLine 2.1.0. Den här versionen innehåller Predictive IntelliSense. Mer information om funktionen Predictive IntelliSense finns i meddelandet i PowerShell-bloggen.
Installationspaket för Microsoft Store
PowerShell 7.1 har publicerats i Microsoft Store. Du hittar PowerShell-versionen på Microsoft Store-webbplatsen eller i Store-programmet i Windows.
Fördelar med Microsoft Store-paketet:
- Automatiska uppdateringar som är inbyggda direkt i Windows
- Integrerar med andra mekanismer för programvarudistribution som Intune och SCCM
Anteckning
Konfigurationsinställningar på systemnivå som lagras i $PSHOME kan inte ändras. Detta inkluderar WSMAN-konfigurationen. Detta förhindrar att fjärrsessioner ansluter till Store-baserade installationer av PowerShell. Konfigurationer på användarnivå och SSH-fjärrkommunikation stöds.
Andra installationsprogram
Mer uppdaterad information om operativsystem som stöds och supportlivscykel finns i Livscykel för PowerShell-support.
Kontrollera installationsanvisningarna för önskat operativsystem:
Dessutom stöder PowerShell 7.1 ARM32- och ARM64-varianter av Debian, Ubuntu och ARM64 Alpine Linux.
Communityn har inte officiellt stöd, men har även tillhandahållit paket för Arch och Kali Linux.
Anteckning
Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine och Arm stöder för närvarande inte WinRM-fjärrkommunikation. Mer information om hur du konfigurerar SSH-baserad fjärrkommunikation finns i PowerShell-fjärrkommunikation via SSH.
Experimentella funktioner
Mer information om experimentella funktioner finns i Använda experimentella funktioner.
Följande experimentella funktioner är nu vanliga funktioner i den här versionen:
Följande experimentella funktioner har lagts till i den här versionen:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- PowerShell 7.1 utökar den här experimentella funktionen för att lägga till Runspace-parametern i alla
*-PSBreakpointcmdletar. Parametern Runspace anger ett Runspace-objekt som ska interagera med brytpunkter i det angivna körningsutrymmet.
- PowerShell 7.1 utökar den här experimentella funktionen för att lägga till Runspace-parametern i alla
PSNativePSPathResolution – Med den här funktionen kan du skicka PowerShell-providersökvägar till interna kommandon som inte stöder PowerShell-sökvägssyntax.
PSCultureInvariantReplaceOperator – När den vänstra operanden i en
-replaceoperator-instruktion inte är en sträng konverteras operand till en sträng. När funktionen är aktiverad använder konverteringen inte Kulturinställningar för strängkonvertering.PSSubsystemPluginModel lägger grunden för framtida Predictive IntelliSense-plugin-program.
Icke-bakåtkompatibla ändringar och förbättringar
Beteendet för strängjämförelse har ändrats i .NET 5.0
PowerShell 7.1 bygger på .NET 5.0, som introducerade följande icke-bakåtkompatibla ändring:
Från och med .NET 5.0 ignorerar kulturvarianta strängjämförelser icke-utskriftskontrolltecken.
Följande två strängar anses till exempel vara identiska:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"TrueÅtgärda
$?till att inte vara$falsenär det interna kommandot skriver tillstderr(#13395)Det är vanligt att interna kommandon skrivs till
stderrutan att ange ett fel. Med den här ändringen$?anges endast till$falsenär det inbyggda kommandot också har en slutkod som inte är noll. Den här ändringen är inte relaterad till den experimentella funktionenPSNotApplyErrorActionToStderr.Påverka
$ErrorActionPreferenceintestderrutdata från interna kommandon (#13361)Det är vanligt att interna kommandon skrivs till
stderrutan att ange ett fel. Med den här ändringenstderrhämtas fortfarande utdata i ErrorRecord-objekt , men körningen gäller$ErrorActionPreferenceinte längre om ErrorRecord kommer från ett internt kommando.Byt
-FromUnixTime-UnixTimeSecondsnamn till påGet-Dateför att tillåta Unix-tidsinmatning (#13084) (tack @aetos382!)Parametern
-FromUnixTimelades till under 7.1-preview.2. Parametern har bytt namn för att bättre matcha datatypen. Den här parametern tar ett heltalsvärde som representerar i sekunder sedan 1 januari 1970, 0:00:00.Det här exemplet konverterar en Unix-tid (representeras av antalet sekunder sedan 1970-01-01 0:00:00) till DateTime.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AMTillåt uttryckligen angiven namngiven parameter för att ersätta samma från hashtable-splatting (#13162)
Med den här ändringen flyttas de namngivna parametrarna från splatting till slutet av parameterlistan så att de är bundna när alla uttryckligen angivna namngivna parametrar är bundna. Parameterbindning för enkla funktioner genererar inget fel när det inte går att hitta en angiven namngiven parameter. Okända namngivna parametrar är bundna till parametern
$argsför den enkla funktionen. Om du flyttar splatting till slutet av argumentlistan ändras ordningen som parametrarna visas i$args.Exempel:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }I föregående beteende är MyPath inte bundet till
-Patheftersom det är det tredje argumentet i argumentlistan. ## Så det slutar med att det fylls i "$args" tillsammans medBlah = "World"PS> $hash = @{ Name = "Hello"; Blah = "World" } PS> SimpleTest @hash "MyPath" Name: Hello; Path: ; Args: -Blah: World MyPathMed den här ändringen flyttas argumenten från
@hashtill slutet av argumentlistan. MyPath blir det första argumentet i listan, så det är bundet till-Path.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: WorldGör växelparametern
-Qualifierinte positionell förSplit-Path(#12960) (Tack @yecril71pl!)Lös arbetskatalogen som literalsökväg för
Start-Processnär den inte har angetts (#11946) (Tack @NoMoreFood!)Gör så
-OutFileatt parametern i webb-cmdletar fungerar som-LiteralPath(#11701) (tack @iSazonov!)Åtgärda strängparameterbindning för
BigIntegernumeriska literaler (#11634) (tack @vexx32!)I Windows
Start-Processskapar en processmiljö med alla miljövariabler från den aktuella sessionen, med hjälp av-UseNewEnvironmentskapar en ny standardprocessmiljö (#10830) (Tack @iSazonov!)Omslut inte returresultatet
PSObjectnär du konverterar ettScriptBlocktill ett ombud (#10619)När en
ScriptBlockkonverteras till en ombudstyp som ska användas i C#-kontext medför omslutning av resultatet i enPSObjectonödiga problem:- När värdet konverteras till ombudets returtyp, packas i
PSObjectprincip upp.PSObjectSå är onödig. - När den delegerade returtypen är
object, omsluts den i enPSObjectvilket gör det svårt att arbeta med i C#-kod.
Efter den här ändringen är det returnerade objektet det underliggande objektet.
- När värdet konverteras till ombudets returtyp, packas i