Co je nového v PowerShellu 7.0

PowerShell 7.0 je opensourcová edice PowerShellu pro různé platformy (Windows, macOS a Linux) vytvořená pro správu heterogenních prostředí a hybridního cloudu.

V této verzi zavádíme řadu nových funkcí, mezi které patří:

  • Paralelizace kanálu s využitím ForEach-Object -Parallel
  • Nové operátory:
    • Ternární operátor: a ? b : c
    • Operátory řetězení kanálů: || a &&
    • Podmíněné operátory null: ?? a ??=
  • Zjednodušené a dynamické zobrazení chyb a Get-Error rutina pro snadnější zkoumání chyb
  • Vrstva kompatibility, která uživatelům umožňuje importovat moduly v implicitní relaci Windows PowerShell
  • Automatická oznámení o nových verzích
  • Možnost volat prostředky DSC přímo z PowerShellu 7 (experimentální)

Úplný seznam funkcí a oprav najdete v protokolech změn.

Kde můžu PowerShell nainstalovat?

PowerShell 7 v současné době podporuje následující operační systémy na platformě x64, včetně:

  • Windows 8.1 a 10
  • Windows Server 2012, 2012 R2, 2016 a 2019
  • macOS 10.13 nebo novější
  • Red Hat Enterprise Linux (RHEL) / CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04 nebo novější
  • Alpine Linux 3.8 nebo novější

PowerShell 7.0 navíc podporuje verze ARM32 a ARM64 systémů Debian, Ubuntu a ARM64 Alpine Linux.

Projděte si pokyny k instalaci preferovaného operačního systému Windows, macOS nebo Linux.

I když se tato komunita oficiálně nepodporuje, poskytuje také balíčky pro Arch a Kali Linux.

Poznámka

Debian 10 a CentOS 8 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.

Aktuální informace o podporovaných operačních systémech a životním cyklu podpory najdete v tématu Životní cyklus podpory PowerShellu.

Spuštění PowerShellu 7

PowerShell 7 se instaluje do adresáře odděleně od Windows PowerShell. To vám umožní spustit PowerShell 7 souběžně s Windows PowerShell 5.1. Pro PowerShell 6.x je PowerShell 7 místní upgrade, který odebere PowerShell 6.x.

  • PowerShell 7 je nainstalovaný ve službě %programfiles%\PowerShell\7
  • Složka %programfiles%\PowerShell\7 se přidá do $env:PATH

Instalační balíček PowerShellu 7 upgraduje předchozí verze PowerShellu 6.x:

  • PowerShell 6.x ve Windows: %programfiles%\PowerShell\6 nahrazuje %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 nahrazuje /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 nahrazuje /usr/local/microsoft/powershell/7

Poznámka

V Windows PowerShell má spustitelný soubor pro spuštění PowerShellu název powershell.exe. Ve verzi 6 a vyšší se název spustitelného souboru změní tak, aby podporoval souběžné spouštění. Nový název spustitelného souboru pro spuštění PowerShellu 7 je pwsh.exe. Buildy Preview zůstanou na místě jako pwsh-preview místo pwsh v adresáři 7 preview.

Vylepšená zpětná kompatibilita s Windows PowerShell

PowerShell 7.0 označuje přechod na .NET Core 3.1, což výrazně zvyšuje zpětnou kompatibilitu se stávajícími moduly Windows PowerShell. To zahrnuje mnoho modulů ve Windows, které vyžadují funkce grafického uživatelského rozhraní, jako jsou Out-GridView a Show-Command, a také mnoho modulů správy rolí, které se dodávají jako součást Windows.

Pro Windows se do přidá nový parametr přepínače UseWindowsPowerShell.Import-Module Tento přepínač vytvoří modul proxy serveru v PowerShellu 7, který používá místní Windows PowerShell proces k implicitnímu spuštění všech rutin obsažených v tomto modulu. Další informace o modulu Import-Module.

Další informace o tom, které moduly Microsoftu fungují s PowerShellem 7.0, najdete v tabulce kompatibility modulů.

Přidání paralelního spouštění do ForEach-Object

Rutina ForEach-Object , která iteruje položky v kolekci, teď má integrovaný paralelismus s novým parametrem Parallel .

Ve výchozím nastavení používají bloky paralelních skriptů aktuální pracovní adresář volajícího, který spustil paralelní úlohy.

Tento příklad načte 50 000 položek protokolu z 5 systémových protokolů na místním počítači s Windows:

$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'

$logEntries = $logNames | ForEach-Object -Parallel {
    Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5

$logEntries.Count

50000

Parametr Parallel určuje blok skriptu, který se spouští paralelně pro každý název vstupního protokolu.

Nový parametr ThrottleLimit omezuje počet paralelně spuštěných bloků skriptu v daném okamžiku. Výchozí hodnota je 5.

Proměnnou $_ použijte k reprezentaci aktuálního vstupního objektu v bloku script. $using: Pomocí oboru předejte odkazy na proměnné do spuštěného bloku skriptu.

Další informace o objektu ForEach.

Ternární operátor

PowerShell 7.0 zavádí ternární operátor, který se chová jako zjednodušený if-else příkaz. Ternární operátor PowerShellu je úzce modelovaný ze syntaxe ternárního operátoru jazyka C#:

<condition> ? <if-true> : <if-false>

Výraz condition-expression se vždy vyhodnocuje a jeho výsledek se převede na logickou hodnotu, aby bylo možné určit, která větev se vyhodnotí jako další:

  • Výraz se <if-true> spustí, pokud <condition> má výraz hodnotu true.
  • Výraz se <if-false> provede, pokud <condition> má výraz hodnotu false.

Příklad:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

Pokud v tomto příkladu cesta existuje, zobrazí se cesta existuje . Pokud cesta neexistuje, zobrazí se cesta nenalezena .

Další informace o aplikaci If.

Operátory řetězu kanálů

PowerShell 7 implementuje operátory && a || do podmíněného řetězení kanálů. Tyto operátory se v PowerShellu označují jako "operátory řetězu kanálů" a podobají se seznamům AND a OR v prostředích, jako bash jsou a zsh, a také symbolům podmíněného zpracování v příkazovém prostředí Windows (cmd.exe).

Pokud && byl levý kanál úspěšný, operátor spustí pravý kanál. Pokud levý kanál selhal, || operátor naopak spustí pravý kanál.

Poznámka

Tyto operátory používají $? proměnné a $LASTEXITCODE k určení, jestli kanál selhal. To vám umožní používat je s nativními příkazy, a ne jenom s rutinami nebo funkcemi.

Tady je první příkaz úspěšný a druhý příkaz:

Write-Output 'First' && Write-Output 'Second'
First
Second

Tady první příkaz selže, druhý se nespustí:

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

Tady je první příkaz úspěšný, druhý příkaz se nespustí:

Write-Output 'First' || Write-Output 'Second'
First

Tady první příkaz selže, takže se spustí druhý příkaz:

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

Další informace o operátorech řetězu kanálů.

Nulové spojení, přiřazení a podmíněné operátory

PowerShell 7 obsahuje operátor ??nulového sjednocení , podmíněné přiřazení ??=null a operátory ?. podmíněného přístupu členů s hodnotou Null a ?[].

Operátor nulového sjednocení ??

Operátor ?? nulového sjednocení vrátí hodnotu levého operandu, pokud není null. V opačném případě vyhodnotí pravý operand a vrátí jeho výsledek. Operátor ?? nevyhodnocuje pravý operand, pokud se levý operand vyhodnotí jako nenulový.

$x = $null
$x ?? 100
100

V následujícím příkladu se pravý operand nevyhodnotí:

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

Operátor podmíněného přiřazení null ?? =

Operátor ??= podmíněného přiřazení null přiřadí hodnotu svého pravého operandu k levému operandu pouze v případě, že se levý operand vyhodnotí jako null. Operátor ??= nevyhodnocuje pravý operand, pokud se levý operand vyhodnotí jako nenulový.

$x = $null
$x ??= 100
$x
100

V následujícím příkladu se pravý operand nevyhodnocuje:

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

Operátory podmíněného přístupu členů s hodnotou null? A? [] (Experimentální)

Poznámka

Toto je experimentální funkce s názvem PSNullConditionalOperators. Další informace najdete v tématu Použití experimentálních funkcí.

Podmíněný operátor null umožňuje přístup členů ?., nebo elementu k operandu pouze v případě, ?[]že se tento operand vyhodnotí jako nenulový. V opačném případě vrátí hodnotu null.

Poznámka

Vzhledem k tomu, že PowerShell umožňuje ? být součástí názvu proměnné, je pro použití těchto operátorů vyžadována formální specifikace názvu proměnné. Proto se vyžaduje použití {} kolem názvů proměnných, například ${a} nebo , když ? je součástí názvu ${a?}proměnné .

V následujícím příkladu se vrátí hodnota vlastnosti člena Status :

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

Následující příklad vrátí hodnotu null bez pokusu o přístup k názvu člena Status:

$service = $Null
${Service}?.status

Podobně se při použití ?[]vrátí hodnota elementu :

$a = 1..10
${a}?[0]
1

A když má operand hodnotu null, k elementu se nepřistupuje a vrátí se hodnota null:

$a = $null
${a}?[0]

Další informace About_Operators.

Nové zobrazení ConciseView a Get-Error rutin

PowerShell 7.0 vylepšuje zobrazení chybových zpráv pro zlepšení čitelnosti interaktivních chyb a chyb skriptů s novým výchozím zobrazením ConciseView. Zobrazení lze vybrat uživatelem prostřednictvím proměnné $ErrorViewpředvoleb .

Pokud u funkce ConciseView není chyba ze skriptu nebo analyzátoru, jedná se o chybovou zprávu na jednom řádku:

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

Pokud k chybě dojde během provádění skriptu nebo dojde k chybě analýzy, powerShell vrátí víceřádkovou chybovou zprávu, která obsahuje chybu, ukazatel a chybovou zprávu, která ukazuje, kde se chyba na daném řádku nachází. Pokud terminál nepodporuje řídicí sekvence barev ANSI (VT100), barvy se nezobrazí.

Zobrazení chyby ze skriptu

Výchozí zobrazení v PowerShellu 7 je ConciseView. Předchozí výchozí zobrazení bylo NormalView a můžete ho vybrat nastavením proměnné $ErrorViewpředvoleb .

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

Poznámka

Do se přidá $Host.PrivateData nová vlastnost ErrorAccentColor, která podporuje změnu barvy motivu chybové zprávy.

Nová rutina Get-Error v případě potřeby poskytuje úplné podrobné zobrazení plně kvalifikované chyby. Ve výchozím nastavení rutina zobrazí úplné podrobnosti, včetně vnitřních výjimek, o poslední chybě, ke které došlo.

Zobrazení z get-error

Rutina Get-Error podporuje vstup z kanálu pomocí předdefinované proměnné $Error. Get-Error zobrazí všechny chyby v kanálu.

$Error | Get-Error

Rutina Get-Error podporuje parametr Newest , který umožňuje určit, kolik chyb z aktuální relace chcete zobrazit.

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

Další informace o get-Error.

Oznámení o nové verzi

PowerShell 7 používá oznámení o aktualizacích k upozornění uživatelů na existenci aktualizací PowerShellu. Jednou denně se PowerShell dotazuje online služby, aby zjistil, jestli je k dispozici novější verze.

Poznámka

Kontrola aktualizace proběhne během první relace v daném 24hodinovém období. Z důvodů výkonu se kontrola aktualizace spustí 3 sekundy po zahájení relace. Oznámení se zobrazí pouze na začátku následujících relací.

Ve výchozím nastavení se PowerShell přihlásí k odběru jednoho ze dvou různých kanálů oznámení v závislosti na jeho verzi nebo větvi. Podporované: Obecně dostupné verze PowerShellu (GA) vrací jenom oznámení o aktualizovaných verzích GA. Verze Preview a Release Candidate (RC) upozorňují na aktualizace verzí Preview, RC a GA.

Chování oznámení o aktualizacích je možné změnit pomocí $Env:POWERSHELL_UPDATECHECK proměnné prostředí. Podporují se následující hodnoty:

  • Výchozí hodnota je stejná jako nedefinování $Env:POWERSHELL_UPDATECHECK
    • Verze GA upozorňují na aktualizace verzí GA
    • Verze Preview/RC upozorňují na aktualizace verzí GA a Preview
  • Vypnuto vypne funkci oznámení o aktualizacích.
  • LTS upozorňuje pouze na aktualizace verzí obecně dostupné verze dlouhodobé údržby (LTS).

Poznámka

Proměnná $Env:POWERSHELL_UPDATECHECK prostředí neexistuje, dokud není poprvé nastavená.

Nastavení oznámení verze pouze pro LTS vydané verze:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Nastavení oznámení o verzi na Default chování:

$Env:POWERSHELL_UPDATECHECK = 'Default'

Další informace o oznámeních o aktualizacích.

Nová podpora prostředků DSC s Invoke-DSCResource (experimentální)

Poznámka

Toto je experimentální funkce s názvem PSDesiredStateConfiguration.InvokeDscResource. Další informace najdete v tématu Použití experimentálních funkcí.

Rutina Invoke-DscResource spustí metodu zadaného prostředku Desired State Configuration PowerShellu (DSC).

Tato rutina vyvolá prostředek DSC přímo, aniž by vytvářela konfigurační dokument. Pomocí této rutiny můžou produkty pro správu konfigurace spravovat Windows nebo Linux pomocí prostředků DSC. Tato rutina také umožňuje ladění prostředků, když je spuštěný modul DSC s povoleným laděním.

Tento příkaz vyvolá metodu Set prostředku s názvem WindowsProcess a poskytuje povinné vlastnosti Cesta a Argumenty pro spuštění zadaného procesu systému Windows.

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

Další informace o Invoke-DSCResource.

Zásadní změny a vylepšení

Zásadní změny

  • Podpora oznámení o aktualizacích LTS a výchozí kanály (#11132)
  • Aktualizujte Test-Connection tak, aby fungovaly podobně jako v Windows PowerShell (#10697) (Díky@vexx32!)
  • Zachovat $? pro ParenExpression, SubExpression a ArrayExpression (#11040)
  • Nastavit pracovní adresář na aktuální adresář v Start-Job (#10920) (Díky @iSazonov!)
  • Nastavení $PSCulture konzistentně reflektovat změny jazykové verze v relaci (#10138) (Díky @iSazonov!)

Aktualizace a opravy modulu

  • Vylepšení rozhraní API zarážek pro vzdálené scénáře (#11312)
  • Oprava úniku definice třídy PowerShellu do jiného prostředí Runspace (#11273)
  • Oprava regrese formátování způsobené primitivem FirstOrDefault přidaným ve verzi 7.0.0-Preview1 (#11258)
  • Další moduly Microsoftu ke sledování v telemetrii PS7 (#10751)
  • Nastavení schválených funkcí jako ne experimentálních (#11303)
  • Aktualizace funkce ConciseView tak, aby v případě potřeby používal objekt TargetObject (#11075)
  • Oprava NullReferenceException ve veřejných metodách CompletionCompleters (#11274)
  • Oprava kontroly stavu vlákna bytu na jiných platformách než Windows (#11301)
  • Aktualizace nastavení PSModulePath tak, aby zřetězení proměnných prostředí procesu a počítače (#11276)
  • Zvýšení počtu .NET Core na verzi 3.1.0 (#11260)
  • Oprava detekce $PSHOME před $env:PATH (#11141)
  • Povolit pwsh dědit $env:PSModulePath a povolit správné spuštění powershell.exe (#11057)
  • Přechod na .NET Core 3.1 Preview 1 (#10798)
  • Refaktoring kontrol značek opakování ve zprostředkovateli systému souborů (#10431) (Díky @iSazonov!)
  • Nahrazení znaku CR a nového řádku znakem 0x23CE v protokolování skriptu (#10616)
  • Oprava nevracení prostředků zrušením registrace obslužné rutiny události z AppDomain.CurrentDomain.ProcessExit (#10626)
  • Přidání podpory do ActionPreference.Break pro rozdělení do ladicího programu při generování ladicích zpráv, chyb, informací, průběhu, podrobné nebo upozorňující zprávy (#8205) (Díky @KirkMunro!)
  • Povolení spouštění doplňků ovládacích panelů v PowerShellu bez zadání rozšíření .CPL. (#9828)
  • Podpora záporných čísel v operátoru -split (#8960) (Díky @ece-jacob-scott!)

Obecné Aktualizace rutin a opravy

  • Oprava problému s nastavením data změn souborů ve funkci UnixStat Experimental v raspbian (#11313)
  • Přidání -AsPlainText do ConvertFrom-SecureString (#11142)
  • Přidání kontroly verze WindowsPS pro WinCompat (#11148)
  • Oprava zasílání zpráv o chybách v některých scénářích WinCompat (#11259)
  • Přidání nativního binárního překladače (#11032) (Díky @iSazonov!)
  • Aktualizace výpočtu šířky znaků tak, aby správně respektoval znaky CJK (#11262)
  • Přidání Unblock-File pro macOS (#11137)
  • Oprava regrese v Get-PSCallStack (#11210) (Díky @iSazonov!)
  • Odebrání automatického načítání modulu ScheduledJob při použití rutin úloh (#11194)
  • Přidání OutputType do rutiny Get-Error a zachování původních názvů typů (#10856)
  • Oprava odkazu null ve vlastnosti SupportsVirtualTerminal (#11105)
  • Přidání kontroly limitu v Get-WinEvent (#10648) (díky @iSazonov!)
  • Oprava modulu runtime příkazů tak, aby se v parametru -ErrorVariable (#10840) nenaplnily stopUpstreamCommandsException
  • Pro nativní příkazy nastavte kódování výstupu na [Console]::OutputEncoding (#10824)
  • Podpora víceřádkových bloků kódu v příkladech (#10776) (díky @Greg-Smulko!)
  • Přidání parametru culture do rutiny Select-String (#10943) (díky @iSazonov!)
  • Oprava cesty Start-Job pracovního adresáře s koncovým zpětným lomítkem (#11041)
  • ConvertFrom-Json: Rozbalení kolekcí ve výchozím nastavení (#10861) (Díky @danstur!)
  • Použití zatřiďovací tabulky s rozlišováním velkých a malých písmen pro rutinu Group-Object s přepínači -CaseSensitive a -AsHashtable (#11030) (díky @vexx32!)
  • Zpracování výjimky, pokud při opětovném sestavení cesty se správnými písmeny (#11014) selže výčet souborů
  • Oprava funkce ConciseView pro zobrazení aktivity místo myCommand (#11007)
  • Povolit webovým rutinám ignorovat chybové stavy HTTP (#10466) (díky @vdamewood!)
  • Oprava propojení více než jednoho CommandInfo do Get-Command (#10929)
  • Přidání rutiny back Get-Counter pro Windows (#10933)
  • Nastavit ConvertTo-Json zacházet s [AutomationNull]::Value a [NullString]::Value jako $null (#10957)
  • Odebrání závorek z adresy ipv6 pro vzdálenou komunikace SSH (#10968)
  • Oprava chybového ukončení, pokud příkaz odeslaný do pwsh je jen prázdný znak (#10977)
  • Přidání Get-Clipboard a Set-Clipboard pro různé platformy (#10340)
  • Oprava nastavení původní cesty k objektu systému souborů tak, aby neměla další koncové lomítko (#10959)
  • $null podpory pro ConvertTo-Json (#10947)
  • Příkaz Přidat zpět Out-Printer ve Windows (#10906)
  • Oprava Start-Job -WorkingDirectory s prázdnými znaky (#10951)
  • Vrácení výchozí hodnoty při získání hodnoty null pro nastavení v PSConfiguration.cs (#10963) (Díky @iSazonov!)
  • Zpracování výjimky vstupně-výstupních operací jako neukončující (#10950)
  • Přidání sestavení GraphicalHost pro povolení Out-GridView, Show-Command a Get-Help -ShowWindow (#10899)
  • Take ComputerName via pipeline in Get-HotFix (#10852) (Díky @kvprasoon!)
  • Oprava dokončování tabulátoru pro parametry tak, aby se zobrazovaly běžné parametry jako dostupné (#10850)
  • Opravte getCorrectCasedPath() a nejprve zkontrolujte, jestli se před voláním First() (#10930) vrátí nějaké položky systémového souboru.
  • Nastavit pracovní adresář na aktuální adresář v Start-Job (#10920) (Díky @iSazonov!)
  • Změňte TabExpansion2 tak, aby nepožadovat -CursorColumn, a považovat za $InputScript.Length (#10849)
  • Popisovač případu, kdy hostitel nevrací řádky nebo sloupce obrazovky (#10938)
  • Oprava použití zvýrazňujících barev u hostitelů, kteří je nepodporují (#10937)
  • Příkaz Přidat zpět Update-List (#10922)
  • Aktualizace ID FWLink pro Clear-RecycleBin (#10925)
  • Během dokončování karet přeskočte soubor, pokud nelze číst atributy souboru (#10910)
  • Přidat zpět Clear-RecycleBin pro Windows (#10909)
  • Přidání $env:__SuppressAnsiEscapeSequences pro řízení, jestli má být řídicí sekvence VT ve výstupu (#10814)
  • Přidání parametru -NoEmphasize pro vybarvení Select-String výstupu (#8963) (díky @derek-xia!)
  • Rutina Add back Get-HotFix (#10740)
  • Zajištění Add-Type použitelnosti v aplikacích, které hostují PowerShell (#10587)
  • Použití efektivnějšího pořadí vyhodnocení v LanguagePrimitives.IsNullLike() (#10781) (Díky @vexx32!)
  • Zlepšení zpracování vstupu se smíšeným sběrem a datových proudů vstupu v Format-Hex (#8674) (díky @vexx32!)
  • Použití převodu typu v hashtables SSHConnection, když hodnota neodpovídá očekávanému typu (#10720) (Díky @SeeminglyScience!)
  • Oprava chování Get-Content -ReadCount 0 při nastavení -TotalCount (#10749) (díky @eugenesmlv!)
  • Chybová zpráva o odepření přístupu v Get-WinEvent (#10639) (Díky @iSazonov!)
  • Povolení dokončování tabulátoru pro přiřazení proměnné s omezením výčtu nebo typu (#10646)
  • Odebrání nepoužívané vlastnosti vzdálené komunikace SourceLength způsobující problémy s formátováním (#10765)
  • Přidání parametru -Delimiter do ConvertFrom-StringData (#10665) (díky @steviecoaster!)
  • Přidání pozičního parametru pro ScriptBlock při použití Invoke-Command s SSH (#10721) (díky @machgo!)
  • Zobrazení informací o kontextu řádku, pokud je více řádků, ale bez názvu skriptu pro ConciseView (#10746)
  • Přidání podpory cest \wsl$\ k poskytovateli systému souborů (#10674)
  • Přidání chybějícího textu tokenu pro TokenKind.QuestionMark v analyzátoru (#10706)
  • Nastavte aktuální pracovní adresář každého skriptu ForEach-Object -Parallel running script do stejného umístění jako volající skript. (#10672)
  • Nahraďte api-ms-win-core-file-l1-2-2.dll Kernell32.dll pro rozhraní API FindFirstStreamW a FindNextStreamW (#10680) (díky @iSazonov!)
  • Úprava skriptů formátování nápovědy tak, aby byl více odolný proti strictMode (#10563)
  • Přidání parametru -SecurityDescriptorSDDL do New-Service (#10483) (díky @kvprasoon!)
  • Odebrání informačního výstupu, konsolidace využití příkazu ping v Test-Connection (#10478) (díky @vexx32!)
  • Čtení speciálních spojovacích bodů bez přístupu k nim (#10662) (díky @iSazonov!)
  • Přímé Clear-Host výstupu do terminálu (#10681) (díky @iSazonov!)
  • Přidat nový řádek zpět pro seskupování pomocí Format-Table a -Property (#10653)
  • Odebráním položky [ValidateNotNullOrEmpty] z objektu -InputObject na Get-Random povolte prázdný řetězec (#10644)
  • Nastavení algoritmu vzdálenosti řetězce návrhu nerozlišující velká a malá písmena (#10549) (díky @iSazonov!)
  • Oprava výjimky odkazu null v ForEach-Object –Paralelní zpracování vstupu (#10577)
  • Přidání definic zásad skupiny PowerShellu (#10468)
  • Aktualizujte hostitele konzoly tak, aby podporoval sekvence ovládacích prvků VT XTPUSHSGR/XTPOPSGR, které se používají ve scénářích kompozičnosti. (#10208)
  • Přidání parametru WorkingDirectory do Start-Job (#10324) (díky @davinci26!)
  • Odeberte obslužnou rutinu události, která způsobovala, že se změny zarážky chybně replikovaly do ladicího programu runspace hostitele (#10503) (díky @KirkMunro!)
  • Nahraďte api-ms-win-core-job-12-1-0.dll Kernell32.dll v Rozhraní API Microsoft.PowerShell.Commands.NativeMethods P/Invoke(#10417) (díky @iSazonov!)
  • Oprava nesprávného výstupu pro New-Service v přiřazení proměnné a -OutVariable (#10444) (díky @kvprasoon!)
  • Oprava globálních problémů s ukončovacím kódem, parametry příkazového řádku a cestou s mezerami (#10461)
  • Oprava rekurze oneDrivu – změna funkce FindFirstFileEx() tak, aby používala typ SafeFindHandle (#10405)
  • Pokud je čtečka obrazovky NVDA aktivní, přeskočte automatické načítání PSReadLine ve Windows (#10385)
  • Zvýšení předdefinovaných verzí modulů PowerShellu na 7.0.0.0 (#10356)
  • Přidání vyvolání chyby v Add-Type, pokud již existuje typ se stejným názvem (#9609) (Díky @iSazonov!)

Výkon

  • Vyhněte se použití uzavření v Parser.SaveError (#11006)
  • Vylepšení ukládání do mezipaměti při vytváření nových instancí Regex (#10657) (díky @iSazonov!)
  • Vylepšení zpracování dat předdefinovaných typů PowerShellu z types.ps1xml, typesV3.ps1xml a GetEvent.types.ps1xml (#10898)
  • Aktualizujte soubor PSConfiguration.ReadValueFromFile, aby byl rychlejší a efektivnější z hlediska paměti (#10839)
  • Přidání drobných vylepšení výkonu pro inicializaci prostředí runspace (#10569) (díky @iSazonov!)
  • Urychlete ForEach-Object pro běžně používané scénáře (#10454) a opravte ForEach-Object – Problém s paralelním výkonem s mnoha runspaces (#10455)

Vyčištění kódu

  • Změna textu komentáře a elementu tak, aby vyhovoval standardům Microsoftu (#11304)
  • Problémy se stylem čištění v souboru Compiler.cs (#10368) (díky @iSazonov!)
  • Odebrání nepoužívaného převaděče typů pro CommaDelimitedStringCollection (#11000) (díky @iSazonov!)
  • Styl čištění v InitialSessionState.cs (#10865) (Díky @iSazonov!)
  • Vyčištění kódu pro třídu PSSession (#11001)
  • Odeberte nefunkční funkci spustit Update-Help z Get-Help při prvním spuštění Get-Help (#10974)
  • Oprava problémů se stylem (#10998) (díky @iSazonov!)
  • Vyčištění: Použijte předdefinovaný alias typu (#10882) (díky @iSazonov!)
  • Odeberte nepoužívaný klíč nastavení ConsolePrompting a vyhněte se zbytečnému vytváření řetězců při dotazování nastavení ExecutionPolicy (#10985)
  • Zakázat kontrolu oznámení o aktualizacích pro denní buildy (#10903) (díky @bergmeister!)
  • Obnovení ladění rozhraní API ztracené v #10338 (#10808)
  • Odebrat odkaz WorkflowJobSourceAdapter, který se už nepoužívá (#10326) (Díky @KirkMunro!)
  • Vyčištění rozhraní COM v kódu seznamu odkazů opravou atributů PreserveSig (#9899) (díky @weltkante!)
  • Přidejte komentář popisující, proč -ia není alias pro společný parametr -InformationAction (#10703) (díky @KirkMunro!)
  • Přejmenujte InvokeCommandCmdlet.cs na InvokeExpressionCommand.cs (#10659) (Díky @kilasuit!)
  • Přidání menšího vyčištění kódu souvisejícího s oznámeními o aktualizacích (#10698)
  • Odebrání zastaralé logiky pracovního postupu ze skriptů nastavení vzdálené komunikace (#10320) (Díky @KirkMunro!)
  • Aktualizace formátu nápovědy tak, aby používal správné velká písmena (#10678) (Díky @tnieto88!)
  • Vyčištění problémů se stylem CodeFactor přicházejících v potvrzeních za poslední měsíc (#10591) (Díky @iSazonov!)
  • Oprava překlepu v popisu experimentální funkce PSTernaryOperator (#10586) (Díky @bergmeister!)
  • Převeďte hodnotu výčtu ActionPreference.Suspend na nepodporovaný rezervovaný stav a odeberte omezení použití ActionPreference.Ignore v proměnných předvoleb (#10317) (Díky @KirkMunro!)
  • Nahraďte ArrayList seznamem<T> , abyste získali čitelnější a spolehlivější kód beze změny funkčnosti (#10333) (Díky @iSazonov!)
  • Oprava stylu kódu v TestConnectionCommand (#10439) (Díky @vexx32!)
  • Vyčištění AutomationEngine a odebrání dodatečného volání metody SetSessionStateDrive (#10416) (Díky @iSazonov!)
  • Přejmenujte výchozí ParametrSetName zpět na Oddělovač pro ConvertTo-Csv a ConvertFrom-Csv (#10425)

nástroje

  • Přidání výchozího nastavení pro vlastnost SDKToUse, aby se sestavily v sadě Visual Studio (#11085)
  • Install-Powershell.ps1: Přidání parametru pro použití instalace MSI (#10921) (Díky @MJECloud!)
  • Přidání základních příkladů pro install-powershell.ps1 (#10914) (Díky @kilasuit!)
  • Nastavení Install-PowerShellRemoting.ps1 zpracování prázdného řetězce v parametru PowerShellHome (#10526) (Díky @Orca88!)
  • Přepnutí z /etc/lsb-release na /etc/os-release v install-powershell.sh (#10773) (Díky @Himura2la!)
  • Kontrola pwsh.exe a pwsh v denní verzi ve Windows (#10738) (Díky @centreboard!)
  • Odebrání nepotřebného klepnutí v installpsh-osx.sh (#10752)
  • Aktualizace install-powershell.ps1 pro kontrolu už nainstalovaného denního buildu (#10489)

Testy

  • Vytvoření nespolehlivého testu DSC čekajícího na vyřízení (#11131)
  • Oprava testu stringdata pro správné ověření klíčů zatřiďovacích tabulek (#10810)
  • Uvolnění testovacích modulů (#11061) (Díky @iSazonov!)
  • Prodloužení doby mezi opakováními testovací adresy URL (#11015)
  • Aktualizujte testy tak, aby přesně popisily testovací akce. (#10928) (Díky @romero126!)
  • Dočasné přeskočení testu TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Zajištění stabilního testu úniku obslužné rutiny události (#10790)
  • Synchronizace velkých písmen v CI YAML (#10767) (Díky @RDIL!)
  • Přidání testu pro opravu úniku obslužné rutiny události (#10768)
  • Přidat Get-ChildItem test (#10507) (Díky @iSazonov!)
  • Nahrazení nejednoznačného jazyka pro testy z důvodu přesnosti na parametr (#10666) (Díky @romero126!)
  • Přidání experimentální kontroly do ForEach-Object paralelních testů (#10354) (Díky @KirkMunro!)
  • Aktualizace testů pro ověřování Alpine (#10428)

Vylepšení sestavení a balíčků

  • Oprava podepisování balíčků NuGet pro sestavení Coordinated Package (#11316)
  • Aktualizace závislostí z Galerie prostředí PowerShell a NuGetu (#11323)
  • Zvýšení hodnoty Microsoft.ApplicationInsights z verze 2.11.0 na verzi 2.12.0 (#11305)
  • Zvýšení hodnoty Microsoft.CodeAnalysis.CSharp z verze 3.3.1 na verzi 3.4.0 (#11265)
  • Aktualizace balíčků pro Debian 10 a 11 (#11236)
  • Povolení experimentálních funkcí pouze před verzí RC (#11162)
  • Aktualizace minimální verze macOS (#11163)
  • Zvýšení úrovně NJsonSchema z 10.0.27 na 10.0.28 (#11170)
  • Aktualizace odkazů v README.md a metadata.json pro Verzi Preview.5 (#10854)
  • Vyberte soubory pro testy dodržování předpisů, které vlastní PowerShell (#10837)
  • Povolte sestavení balíčku msix win7x86. (Interní 10515)
  • Povolení předání sémantických verzí do funkce NormalizeVersion (#11087)
  • Zvýšení architektury .NET Core na verzi 3.1-preview.3 (#11079)
  • Bump PSReadLine z 2.0.0-beta5 na 2.0.0-beta6 v /src/Modules (#11078)
  • Bump Newtonsoft.Json from 12.0.2 to 12.0.3 (#11037) (#11038)
  • Přidání balíčků Debian 10, 11 a CentOS 8 (#11028)
  • Nahrání Build-Info souboru JSON s polem ReleaseDate (#10986)
  • Zvýšení architektury .NET Core na verzi 3.1-preview.2 (#10993)
  • Povolení sestavení balíčku x86 MSIX (#10934)
  • Aktualizace adresy URL instalačního skriptu sady dotnet SDK v build.psm1 (#10927)
  • Bump Markdig.Signed od 0.17.1 do 0.18.0 (#10887)
  • Bump ThreadJob z verze 2.0.1 do 2.0.2 (#10886)
  • Aktualizace manifestu AppX a modulu Balení tak, aby odpovídaly požadavkům ms Storu (#10878)
  • Aktualizace referenčních informací k balíčku sady PowerShell SDK na Verzi Preview.5 (interní verze 10295)
  • Aktualizace ThirdPartyNotices.txt (#10834)
  • Přepněte Microsoft.PowerShell.Native na verzi 7.0.0-preview.3 (#10826)
  • Zvýšení hodnoty Microsoft.ApplicationInsights z verze 2.10.0 na verzi 2.11.0 (#10608)
  • Zvýšení úrovně NJsonSchema z 10.0.24 na 10.0.27 (#10756)
  • Přidání podpory MacPorts do systému sestavení (#10736) (Díky @Lucius-Q-User!)
  • Bump PackageManagement z 1.4.4 na 1.4.5 (#10728)
  • Zvýšení úrovně NJsonSchema z 10.0.23 na 10.0.24 (#10635)
  • Přidání proměnné prostředí pro rozlišení telemetrie klienta a serveru v MSI (#10612)
  • Zvýšení hodnoty PSDesiredStateConfiguration z 2.0.3 na 2.0.4 (#10603)
  • Zvýšení hodnoty Microsoft.CodeAnalysis.CSharp z verze 3.2.1 na verzi 3.3.1 (#10607)
  • Aktualizace na .Net Core 3.0 RTM (#10604) (díky@bergmeister!)
  • Aktualizace balení MSIX tak, aby požadavky na verzi pro Windows Store (#10588)
  • Zvýšení verze PowerShellGet z 2.2 na 2.2.1 (#10382)
  • Bump PackageManagement verze od 1.4.3 do 1.4.4 (#10383)
  • Aktualizace README.md a metadata.json pro verzi 7.0.0-preview.4 (interní verze 10011)
  • Upgrade verze .Net Core 3.0 z verze Preview 9 na RC1 (#10552) (díky@bergmeister!)
  • Oprava generování seznamu ExperimentalFeature (Interní 9996)
  • Bump PSReadLine verze z 2.0.0-beta4 do 2.0.0-beta5 (#10536)
  • Oprava skriptu sestavení vydané verze pro nastavení značky vydané verze
  • Aktualizace verze Microsoft.PowerShell.Native na 7.0.0-preview.2 (#10519)
  • Upgrade na Netcoreapp3.0 preview9 (#10484) (díky @bergmeister!)
  • Ujistěte se, že každodenní koordinovaný build ví, že se jedná o každodenní build (#10464)
  • Aktualizace kombinovaného sestavení balíčku pro vydávání denních buildů (#10449)
  • Odebrání odkazu na appveyor (#10445) (Díky @RDIL!)
  • Bump NJsonSchema verze od 10.0.22 do 10.0.23 (#10421)
  • Odeberte odstraněnou složku sestavení linux-x64, protože některé závislosti pro Alpine to vyžadují (#10407)

Dokumentace a obsah nápovědy

  • Refaktoring protokolů změn do jednoho protokolu pro každou verzi (#11165)
  • Oprava odkazů FWLinks pro dokumenty online nápovědy PowerShellu 7 (#11071)
  • Update CONTRIBUTING.md (#11096) (Díky @mklement0!)
  • Oprava odkazů na dokumentaci k instalaci v README.md (#11083)
  • Přidá příklady do skriptu install-powershell.ps1 (#11024) (Díky @kilasuit!)
  • Oprava Select-String zdůraznění a Import-DscResource v CHANGELOG.md (#10890)
  • Odebrání zastaralého odkazu z powershell-beginners-guide.md (#10926)
  • Sloučení stabilních a servisních protokolů změn (#10527)
  • Aktualizace použité verze .NET v dokumentaci k sestavení (#10775) (Díky @Greg-Smulko!)
  • Nahrazení odkazů z MSDN na Microsoft Learn v powershell-beginners-guide.md (#10778) (Díky @iSazonov!)
  • Oprava nefunkčního odkazu na přehled DSC (#10702)
  • Aktualizujte Support_Question.md tak, aby odkaz na Stack Overflow byl dalším komunitním prostředkem (#10638) (Díky @mklement0!)
  • Přidání architektury procesoru do šablony žádosti o distribuci (#10661)
  • Přidání nové knihy PowerShellu MoL do dokumentace k PowerShellu (#10602)
  • Aktualizace README.md a metadat pro verze v6.1.6 a v6.2.3 (#10523)
  • Oprava překlepu v README.md (#10465) (díky @vedhasp!)
  • Přidání odkazu na modul PSKoans do dokumentace k výukovým zdrojům (#10369) (díky @vexx32!)
  • Aktualizace README.md a metadata.json pro verzi 7.0.0-preview.3 (#10393)