Nyheter i PowerShell Core 6.2

PowerShell Core 6.2-versionen fokuserade på prestandaförbättringar, felkorrigeringar och mindre cmdletar och språkförbättringar som förbättrar kvaliteten. En fullständig lista över förbättringar finns i våra detaljerade ändringsloggar på GitHub.

Experimentella funktioner

Tidigare har vi aktiverat stöd för experimentella funktioner. I 6.2-versionen har vi fyra experimentella funktioner att testa. Ge feedback så att vi kan göra förbättringar och avgöra om funktionen är värd att främja till mainstream-status.

Använd Get-ExperimentalFeature för att hämta en lista över tillgängliga experimentella funktioner. Du kan aktivera eller inaktivera dessa funktioner med Enable-ExperimentalFeature och Disable-ExperimentalFeature.

Det gick inte att hitta kommandots förslag

Den här funktionen använder fuzzy-matchning för att hitta förslag på kommandon eller cmdletar som du kan ha feltypat.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Exempel

I det här exemplet är det felstavade cmdlet-namnet fuzzy matchat med flera förslag från mest sannolikt till minst troligt.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Implicit fjärrkommunikation batchbearbetning

När du använder implicit fjärrkommunikation i en pipeline behandlar PowerShell varje kommando i pipelinen oberoende av varandra. Objekt serialiseras upprepade gånger och de-serialized mellan klienten och fjärrsystemet över körningen av pipelinen.

Med den här funktionen analyserar PowerShell pipelinen för att avgöra om kommandot är säkert att köra och om det finns i målsystemet. När det är sant kör PowerShell hela pipelinen via fjärranslutning och serialiserar bara och de-serializes resultaten tillbaka till klienten.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Ett verkligt test av Get-Process | Sort-Object över localhost minskar från 10–15 sekunder till 20–30 millisekunder. Funktionen behöver bara aktiveras på klienten. Inga ändringar krävs på servern.

Temporär enhet

Enable-ExperimentalFeature -Name PSTempDrive

Om du använder PowerShell Core på olika operativsystem upptäcker du att miljövariabeln för att hitta den tillfälliga katalogen skiljer sig åt i Windows, macOS och Linux! Med den här funktionen får du ett PSDrive-namnTemp: som automatiskt mappas till den tillfälliga mappen för det operativsystem som du använder.

Exempel

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Tänk på att interna filkommandon (t.ex ls . i Linux) inte känner till PSDrive och inte ser den här Temp: enheten.

Förkortningsexpansion

PowerShell-cmdletar förväntas ha beskrivande substantiv. Detta resulterar i långa namn som är svårare att skriva. Med den här funktionen kan du bara skriva versaler i cmdleten och använda tabbifyllning för att hitta en matchning.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Exempel

PS> i-arsavsf

Om du trycker på fliken och har Azure PowerShell Az-modulen installerad, kompletteras den automatiskt till:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Anteckning

Den här funktionen är avsedd att användas interaktivt. Förkortade former av cmdletar kan inte köras. Den här funktionen ersätter inte alias.

Icke-bakåtkompatibla ändringar

  • Åtgärda -NoEnumerate beteendet i Write-Output för att vara konsekvent med Windows PowerShell. (#9069)
  • Gör Join-String -InputObject 1,2,3 resultatet lika med 1,2,3 | Join-String resultatet (#8611) (Tack @sethvs!)
  • Lägg till -StableSort-Object i och relaterade tester (#7862) (tack @KirkMunro!)
  • Förbättra Start-Sleep cmdleten för att acceptera bråksekunder (#8537) (tack @Prototyyppi!)
  • Ändra hashtabellen så att OrdinalIgnoreCase används case-insensitive i alla kulturer (#8566)
  • Åtgärda LiteralPath i Import-Csv för att binda till Get-ChildItem utdata (#8277) (tack @iSazonov!)
  • Hoppar inte längre över en kolumn utan namn om avgränsare med dubbla citattecken används i Import-Csv (#7899) (tack @Topping!)
  • Get-ExperimentalFeature har -ListAvailable inte längre växel (#8318)
  • Felsökningsparametern ställer nu in $DebugPreferencepå Fortsätt i stället för Fråga (#8195) (Tack @KirkMunro!)
  • Respektera -OutputFormat om det anges i ett icke-interaktivt, omdirigerat, kodat kommando som används med pwsh (#8115)
  • Läs in sammansättningen från modulbassökvägen innan du försöker läsa in från GAC (#8073)
  • Ta bort tilde från Linux-förhandsgranskningspaket (#8244)
  • Flytta bearbetning av -WorkingDirectory före bearbetning av profiler (#8079)
  • Lägg inte till PATHEXT miljövariabel på Unix (#7697) (tack @iSazonov!)

Kända problem

  • Fjärrkommunikation på Windows IOT ARM-plattformar har problem med att läsa in moduler. Se (#8053)

Allmänna Uppdateringar och korrigeringar

  • Aktivera skiftlägesokänslig tabbifyllning för filer och mappar i skiftlägeskänsligt filsystem (#8128)
  • Gör PSVersionInfo.PSVersion och PSVersionInfo.PSEdition offentliga (#8054) (tack @KirkMunro!)
  • Lägg till typinferens för $_ / $PSItem i catch{ } block (#8020) (tack @vexx32!)
  • Åtgärda slutsatsdragning av anropstyp för statisk metod (#8018) (tack @SeeminglyScience!)
  • Skapa härledda typer för Select-Object, Group-Object, PSObject och Hashtable (#7231) (tack @powercode!)
  • Stöd för anropsmetod med ByRef-like typparametrar (#7721)
  • Hantera det fall där Windows PowerShell modulsökvägen redan finns i miljöns PSModulePath (#7727)
  • Aktivera SecureString cmdletar för icke-Windows genom att lagra oformaterad text (#9199)
  • Förbättra felmeddelandet i icke-Windows när du importerar clixml med securestring (#7997)
  • Lägga till parametern ReplyTo i Send-MailMessage (#8727) (tack @replicaJunction!)
  • Lägg till föråldrat meddelande i Send-MailMessage (#9178)
  • Korrigering Restart-Computer att arbeta med localhost när WinRM inte finns (#9160)
  • Generera Start-Job ett avslutande fel när PowerShell körs (#9128)
  • Lägg till C#-formattypacceleratorer och suffix för ushort-, uint-, ulong- och korta literaler (#7813) (Tack @vexx32!)
  • Nya suffix har lagts till för numeriska literaler – se about_Numeric_Literals (#7901) (Tack @vexx32!)
  • Rapportera effektnivån korrekt när SupportsShouldProcess inte är inställt på "true" (#8209) (tack @vexx32!)
  • Åtgärda problem med begärandekoduppsättningar i webb-cmdletar (#8742) (tack @markekraus!)
  • Åtgärda expect-problem 100-continue med webb-cmdletar (#8679) (tack @markekraus!)
  • Åtgärda filblockeringsproblem med webb-cmdletar (#7676) (tack @Claustn!)
  • Åtgärda problem med parsning av kodsidor i Invoke-RestMethod (#8694) (tack @markekraus!)
  • ConvertTo-Json Omstrukturera för att exponera JsonObject.ConvertToJson som ett offentligt API (#8682)
  • Lägg till konfigurerbart maximalt djup i ConvertFrom-Json med -Depth (#8199) (Tack @louistio!)
  • Lägg till parametern EscapeHandling i ConvertTo-Json cmdleten (#7775) (tack @iSazonov!)
  • Lägg till -CustomPipeName i pwsh och Enter-PSHostProcess (#8889)
  • Aktivera skapandet av relativa symboliska länkar i Windows med New-Item (#8783)
  • Tillåt Windows-användare i utvecklarläge att skapa symlinks utan utökade privilegier (#8534)
  • Aktivera Write-Information för att acceptera $null (#8774)
  • Korrigering Get-Help för avancerade funktioner med MAML-hjälpinnehåll (#8353)
  • Åtgärda Get-Help PSTypeName-problem med -Parameter när endast en parameter deklareras (#8754) (tack @pougetat!)
  • Tokenberäkningskorrigering för Get-Help körs på ScriptBlock för kommentarshjälp. (#8238) (Tack @hubuk!)
  • Ändra Get-Help cmdleten -Parameterparametern så att den accepterar strängmatriser (#8454) (tack @sethvs!)
  • Lös PAGER om sökvägen innehåller blanksteg (#8571) (tack @pougetat!)
  • Lägg till en uppmaning om att använda less i funktionen "hjälp" för att instruera användaren att avsluta (#7998)
  • Lägg till stöduppräknings- och teckentyper i Format-Hex cmdlet (#8191) (tack @iSazonov!)
  • Ta bort ShouldProcess från Format-Hex (#8178)
  • Lägg till nya förskjutnings- och antalsparametrar till Format-Hex och omstrukturera cmdleten (#7877) (tack @iSazonov!)
  • Tillåt "namn" som aliasnyckel för "etikett" i ConvertTo-Html, tillåt att "width"-posten är ett heltal (#8426) (tack @mklement0!)
  • Få skriptblocksbaserade beräknade egenskaper att fungera igen i ConvertTo-Html (#8427) (Tack @mklement0!)
  • Lägg till cmdlet Join-String för att skapa text från pipelineindata (#7660) (tack @powercode!)
  • Åtgärda Join-String parameterlogik för cmdleten FormatString (#8449) (tack @sethvs!)
  • Clear-Host tillbaka till att använda $RAWUI och rensa för att arbeta via fjärrkommunikation (#8609)
  • Ändra Clear-Host till att helt enkelt anropa [console]::clear och ta bort ett tydligt alias från Unix (#8603)
  • Åtgärda LiteralPath för Import-Csv att binda till Get-ChildItem utdata (#8277) (tack @iSazonov!)
  • hjälpfunktionen bör inte använda pager för AliasHelpInfo (#8552)
  • Lägg till -UseMinimalHeaderStart-Transcript för att minimera avskriftshuvudet (#8402) (tack @lukexjeremy!)
  • Lägg till Enable-ExperimentalFeature och Disable-ExperimentalFeature cmdletar (#8318)
  • Exponera alla cmdletar från PSDiagnostics om logman.exe är tillgänglig (#8366)
  • Ta bort persist-parametern från New-PSDrive plattformen non-Windows (#8291) (tack @lukexjeremy!)
  • Lägg till stöd för cd + (#7206) (Tack @bergmeister!)
  • Aktivera Set-Location -LiteralPath för att arbeta med mappar med namnet - och + (#8089)
  • Test-Path returnerar $false när du får ett tomt värde eller $null sökvägsvärde (#8080) (tack @vexx32!)
  • Tillåt att dynamisk parameter returneras även om sökvägen inte matchar någon provider (#7957)
  • Stöd Get-PSHostProcessInfo och Enter-PSHostProcess på Unix-plattformar (#8232)
  • Minska allokeringar i Get-Content cmdlet (#8103) (tack @iSazonov!)
  • Aktivera Add-Content för att dela läsåtkomst med andra verktyg när du skriver innehåll (#8091)
  • Get/Add-Content genererar ett förbättrat fel när du riktar in dig på en container (#7823) (tack @kvprasoon!)
  • Lägg till -Nameparametrarna -NoUserOverrides och -ListAvailable i Get-Culture cmdleten (#7702) (tack @iSazonov!)
  • Lägg till enhetligt attribut för slutförande för kodningsparametern . (#7732) (Tack @ThreeFive-O!)
  • Tillåt numeriska ID:n och namnet på registrerade kodsidor i kodningsparametrar (#7636) (tack@iSazonov!)
  • Korrigering Rename-Item -Path med jokertecken (#7398) (tack @kwkam!)
  • När du använder Start-Transcript och filen finns, tom fil i stället för att ta bort (#8131) (Tack @paalbra!)
  • Gör Add-Type öppen källkod filer med FileAccess.Read och FileShare.Read explicit (#7915) (tack@IISResetMe!)
  • Korrigering Enter-PSSession -ContainerId för senaste Windows (#7883)
  • Kontrollera att egenskapen NestedModules fylls i av Test-ModuleManifest (#7859)
  • Lägg till %F ärende i Get-Date -UFormat (#7630) (tack @britishben!)
  • Korrigering Set-Service -Status Stopped för att stoppa tjänster med beroenden (#5525) (tack @zhenggu!)