Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Op 11 november 2020 kondigden we de algemene beschikbaarheid van PowerShell 7.1 aan. Voortbouwend op de basis die is gelegd in PowerShell 7.0, richtten onze inspanningen zich op communityproblemen en omvatten we een aantal verbeteringen en oplossingen. Wij zetten ons in om ervoor te zorgen dat PowerShell een stabiel en presterende platform blijft.
PowerShell 7.1 bevat de volgende functies, updates en breaking changes.
- PSReadLine 2.1.0, die Predictive IntelliSense bevat
- PowerShell 7.1 is gepubliceerd in de Microsoft Store
- Installerpakketten bijgewerkt voor nieuwe OS-versies met ondersteuning voor ARM64
- 4 nieuwe experimentele rubrieken en 2 experimentele rubrieken die mainstream zijn gepromoot
- Verschillende breaking changes om de bruikbaarheid te verbeteren
Zie de CHANGELOG- in de GitHub-opslagplaats voor een volledige lijst met wijzigingen.
PSReadLine 2.1.0
PowerShell 7.1 bevat ook PSReadLine 2.1.0. Deze versie bevat Predictive IntelliSense. Voor meer informatie over de Predictive IntelliSense-functie, zie de aankondiging in de PowerShell-blog.
Microsoft Store installerpakket
PowerShell 7.1 is uitgebracht in de Microsoft Store. Je kunt de PowerShell-release vinden op de Microsoft Store-website of in de Store-applicatie van Windows.
Voordelen van het Microsoft Store-pakket:
- Automatische updates die rechtstreeks in Windows zijn ingebouwd
- Integreert met andere softwaredistributiemechanismen zoals Intune en SCCM
Opmerking
Configuratie-instellingen op systeemniveau die in $PSHOME zijn opgeslagen, kunnen niet worden gewijzigd. Dit omvat de WSMAN-configuratie. Hiermee voorkomt u dat externe sessies verbinding maken met op Store gebaseerde installaties van PowerShell. Configuraties op gebruikersniveau en SSH-extern beheer worden ondersteund.
Andere installateurs
Voor meer informatie over up-todatum over ondersteunde besturingssystemen en de levenscyclus van ondersteuning, zie de PowerShell Support Lifecycle.
Bekijk de installatie-instructies van je favoriete besturingssysteem:
Daarnaast ondersteunt PowerShell 7.1 ARM32- en ARM64-varianten van Debian, Ubuntu en ARM64 Alpine Linux.
Hoewel het niet officieel wordt ondersteund, heeft de community ook pakketten geleverd voor Arch en Kali Linux.
Opmerking
Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine en Arm ondersteunen momenteel geen WinRM-afstandsbediening. Voor details over het instellen van SSH-gebaseerde afstandsbediening, zie PowerShell Afstanden over SSH.
Experimentele functies
Voor meer informatie over experimentele functies, zie Experimentele functies gebruiken.
De volgende experimentele functies zijn nu mainstream features in deze release:
De volgende experimentele functies werden in deze release toegevoegd:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- PowerShell 7.1 breidt deze experimentele functie uit om de Runspace-parameter aan alle
*-PSBreakpointcmdlets toe te voegen. De Runspace-parameter specificeert een runspace-object dat interacteert met breakpoints in de gespecificeerde runspace.
- PowerShell 7.1 breidt deze experimentele functie uit om de Runspace-parameter aan alle
PSNativePSPathResolution - Deze functie stelt je in staat om PowerShell-providerpaden door te geven aan native commando's die PowerShell-padsyntaxis niet ondersteunen.
PSCultureInvariantReplaceOperator - Wanneer de linker operand in een
-replaceoperator-instructie geen string is, wordt die operand omgezet in een string. Met de functie ingeschakeld gebruikt de conversie geen Culture-instellingen voor stringconversie.PSSubsystemPluginModel legt de basis voor toekomstige Predictive IntelliSense-plug-ins te ondersteunen.
Breaking Changes en Verbeteringen
Gedragsvergelijking van strengs veranderd in .NET 5.0
PowerShell 7.1 is gebouwd op .NET 5.0, wat de volgende ingrijpende wijziging introduceerde:
Vanaf .NET 5.0 negeren vergelijkingen van cultuurinvariante strings niet-printende controletekens.
Bijvoorbeeld, de volgende twee strings worden als identiek beschouwd:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"TrueOplossing
$?zodat het niet is$falsewanneer het native commando schrijft naarstderr(#13395)Het is gebruikelijk dat native commando's schrijven zonder
stderrde bedoeling een storing aan te geven. Met deze wijziging$?wordt ingesteld op$falsealleen wanneer het native commando ook een niet-nul exitcode heeft. Deze wijziging staat los van de experimentele eigenschapPSNotApplyErrorActionToStderr.Laat de
$ErrorActionPreferenceuitvoer van native commando's niet beïnvloedenstderr(#13361)Het is gebruikelijk dat native commando's schrijven zonder
stderrde bedoeling een storing aan te geven. Met deze wijzigingstderrwordt de output nog steeds vastgelegd in ErrorRecord-objecten , maar de runtime is niet langer van toepassing$ErrorActionPreferenceals de ErrorRecord afkomstig is van een native commando.Hernoem
-FromUnixTimenaar-UnixTimeSecondsaanGet-Dateom Unix-tijdinvoer mogelijk te maken (#13084) (Bedankt @aetos382!)De
-FromUnixTimeparameter werd toegevoegd tijdens 7.1-preview.2. De parameter werd hernoemd om beter bij het datatype te passen. Deze parameter neemt een geheel getal aan dat sinds 1 januari 1970 in seconden 0:00:00 staat.Dit voorbeeld zet een Unix-tijd om (weergegeven door het aantal seconden sinds 1970-01-01 0:00:00) naar DateTime.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AMLaat expliciet gespecificeerde benoemde parameter dezelfde van hashtable splatting vervangen (#13162)
Met deze wijziging worden de benoemde parameters uit splatting naar het einde van de parameterlijst verplaatst, zodat ze gebonden zijn nadat alle expliciet gespecificeerde benoemde parameters zijn gebonden. Parameterbinding voor eenvoudige functies geeft geen foutmelding wanneer een gespecificeerde benoemde parameter niet gevonden kan worden. Onbekende benoemde parameters zijn gebonden aan de
$argsparameter van de eenvoudige functie. Het verplaatsen van splatting naar het einde van de argumentlijst verandert de volgorde waarin de parameters verschijnen$args.Voorbeeld:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }In het vorige gedrag is MyPath er niet aan
-Pathgebonden omdat het het derde argument in de argumentenlijst is. ## Dus het wordt uiteindelijk in '$args' gestopt samen metBlah = "World"PS> $hash = @{ Name = "Hello"; Blah = "World" } PS> SimpleTest @hash "MyPath" Name: Hello; Path: ; Args: -Blah: World MyPathMet deze wijziging worden de argumenten van
@hashnaar het einde van de argumentenlijst verplaatst. MyPath wordt het eerste argument in de lijst, dus het is gebonden aan-Path.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: WorldMaak de schakelaarparameter
-Qualifierniet positioneel voorSplit-Path(#12960) (Bedankt @yecril71pl!)Sluit de werkmap op als letterlijk pad voor
Start-Processwanneer het niet is gespecificeerd (#11946) (Bedankt @NoMoreFood!)Laat
-OutFileparameters in web-cmdlets werken zoals-LiteralPath(#11701) (Bedankt @iSazonov!)Fix stringparameterbinding voor
BigIntegernumerieke literalen (#11634) (Dank je @vexx32!)Op Windows
Start-Processmaakt een procesomgeving met alle omgevingsvariabelen uit de huidige sessie,-UseNewEnvironmentwaarbij een nieuwe standaard procesomgeving wordt aangemaakt (#10830) (Dank je). @iSazonov!)Return return resultaat niet omwikkelen
PSObjectbij het converteren van eenScriptBlocknaar een delegat (#10619)Wanneer a
ScriptBlockwordt omgezet naar een gedelegeertype dat in C#-context wordt gebruikt, brengt het wrappen van het resultaat in eenPSObjectonnodige problemen met zich mee:- Wanneer de waarde wordt omgezet naar het type delegate return, wordt de
PSObjectin feite weer uitgepakt. Dus hetPSObjectis overbodig. - Wanneer het type delegate return is
object, wordt het omwikkeld met aPSObject, waardoor het moeilijk is om mee te werken in C#-code.
Na deze wijziging is het geretourneerde object het onderliggende object.
- Wanneer de waarde wordt omgezet naar het type delegate return, wordt de