Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
PowerShell 7.0 to otwartoźródłowa, wieloplatformowa (Windows, macOS i Linux) edycja PowerShell, stworzona do zarządzania środowiskami heterogenicznymi i chmurą hybrydową.
W tej wersji wprowadzamy szereg nowych funkcji, w tym:
- Równoległość potoku z
ForEach-Object -Parallel - Nowi operatorzy:
- Operator trójwymiarowy:
a ? b : c - Operatorzy łańcucha potoków:
||oraz&& - Operatory warunkowe zerowe:
??oraz??=
- Operator trójwymiarowy:
- Uproszczony i dynamiczny widok błędów oraz cmdlet dla
Get-Errorłatwiejszego badania błędów - Warstwa kompatybilności, która umożliwia użytkownikom importowanie modułów w niejawnej sesji Windows PowerShell
- Automatyczne powiadomienia o nowych wersjach
- Możliwość wywoływania zasobów DSC bezpośrednio z PowerShell 7 (eksperymentalne)
Aby zobaczyć pełną listę funkcji i poprawek, zobacz changelogi.
Gdzie mogę zainstalować PowerShell?
PowerShell 7 obecnie obsługuje następujące systemy operacyjne na x64, w tym:
- Windows 8.1 i 10
- Windows Server 2012, 2012 R2, 2016 i 2019
- macOS 10.13+
- Red Hat Enterprise Linux (RHEL) / CentOS 7
- Fedora 30+
- Debian 9
- Ubuntu LTS 16.04+
- Alpine Linux 3.8+
Dodatkowo PowerShell 7.0 obsługuje warianty ARM32 i ARM64: Debian, Ubuntu oraz ARM64 Alpine Linux.
Sprawdź instrukcje instalacji dla preferowanego systemu operacyjnego Windows, macOS lub Linux.
Chociaż nie jest oficjalnie wspierany, społeczność udostępniła także pakiety dla Arch i Kali Linux.
Uwaga / Notatka
Debian 10 i CentOS 8 obecnie nie obsługują zdalnych systemów WinRM. Szczegóły dotyczące konfiguracji zdalnego dostępu opartego na SSH można znaleźć w artykule PowerShell Reremote over SSH.
Aby uzyskać więcej informacji o wspieranych systemach operacyjnych i cyklu życia up-todaty, zobacz cykl życia wsparcia PowerShell.
Uruchamianie PowerShell 7
PowerShell 7 instaluje się do katalogu oddzielnie niż Windows PowerShell. Pozwala to uruchamiać PowerShell 7 równolegle z Windows PowerShell 5.1. Dla PowerShell 6.x PowerShell 7 to aktualizacja na miejscu, która usuwa PowerShell 6.x.
- PowerShell 7 jest instalowany do
%programfiles%\PowerShell\7 - Folder
%programfiles%\PowerShell\7jest dodawany do$env:PATH
Pakiet instalacyjny PowerShell 7 aktualizuje wcześniejsze wersje PowerShell 6.x:
- PowerShell 6.x na Windows:
%programfiles%\PowerShell\6został zastąpiony przez%programfiles%\PowerShell\7 - Linux:
/opt/microsoft/powershell/6zostaje zastąpiony przez/opt/microsoft/powershell/7 - macOS:
/usr/local/microsoft/powershell/6został zastąpiony przez/usr/local/microsoft/powershell/7
Uwaga / Notatka
W Windows PowerShell plik wykonywalny do uruchamiania PowerShell nazywa się powershell.exe. W wersji 6 i wyższych nazwa pliku wykonywalnego zostaje zmieniona, aby obsługiwać wykonywanie równoległe. Nowa nazwa pliku wykonywalnego do uruchamiania PowerShell 7 to pwsh.exe. Wersje podglądowe pozostają na miejscu, pwsh-preview a pwsh nie w katalogu 7-podglądowym.
Poprawa kompatybilności wstecznej z Windows PowerShell
PowerShell 7.0 oznacza przejście na .NET Core 3.1, umożliwiając znacznie większą kompatybilność wsteczną z istniejącymi modułami PowerShell w Windows. Obejmuje to wiele modułów na Windows, które wymagają funkcjonalności GUI, takich jak Out-GridView i Show-Command, a także wiele modułów zarządzania rolami dostarczanych jako część Windows.
Dla Windows dodaje się nowy parametr przełącznika UseWindowsPowerShell do Import-Module. Ten przełącznik tworzy moduł proxy w PowerShell 7, który korzysta z lokalnego procesu Windows PowerShell do niejawnego uruchamiania dowolnych cmdletów zawartych w tym module. Więcej informacji o Import-Module.
Więcej informacji o tym, które moduły Microsoft działają z PowerShell 7.0, można znaleźć w Tabeli Zgodności Modułów.
Równoległe wykonywanie dodano do ForEach-Object
Cmdlet ForEach-Object , który iteruje elementy w kolekcji, ma teraz wbudowany paralelizm z nowym parametrem równoległości .
Domyślnie równoległe bloki skryptowe korzystają z aktualnego katalogu roboczego wywołującego, który rozpoczął zadania równoległe.
Ten przykład pobiera 50 000 wpisów z 5 logów systemowych na lokalnej maszynie z 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 określa blok skryptu uruchamiany równolegle dla każdej nazwy logu wejściowego.
Nowy parametr ThrottleLimit ogranicza liczbę bloków skryptów działających równolegle w danym momencie. Wartość domyślna to 5.
Użyj $_ zmiennej do reprezentowania aktualnego obiektu wejściowego w bloku skryptowym. Użyj zakresu $using: do przekazywania odniesień do zmiennych do bloku skryptu działającego.
Więcej informacji o ForEach-Object.
Operator Ternary
PowerShell 7.0 wprowadza operator ternarny, który zachowuje się jak uproszczone if-else zdanie.
Operator trójosobowy PowerShella jest ściśle modelowany na podstawie składni operatora trójrzędnego w C#:
<condition> ? <if-true> : <if-false>
Wyrażenie warunkowe jest zawsze oceniane, a jego wynik przekształcany w boolea, aby określić, która gałąź jest obliczana jako następna:
- Wyrażenie
<if-true>jest wykonywane, jeśli wyrażenie<condition>ma wartość true - Wyrażenie
<if-false>jest wykonywane, jeśli wyrażenie<condition>ma wartość false
Przykład:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
W tym przykładzie, jeśli ścieżka istnieje, to wyświetlana jest ścieżka istniejąca . Jeśli ścieżka nie istnieje, wyświetlana jest ścieżka nieznaleziona .
Więcej informacji o If.
Operatorzy łańcucha rurociągowego
PowerShell 7 implementuje operatory && and || do warunkowego łańcucha potoków. Operatory te są w PowerShell znane jako "operatory łańcucha potokowego" i są podobne do list AND i OR w powłokach takich jak bash and zsh, a także do symboli przetwarzania warunkowego w Windows Command Shell (cmd.exe).
Operator && wykonuje potok po prawej stronie, jeśli potok po lewej stronie zakończył się pomyślnie. Z drugiej strony operator || wykonuje potok po prawej stronie, jeśli potok po lewej stronie zakończył się niepowodzeniem.
Uwaga / Notatka
Te operatory używają zmiennych $? i $LASTEXITCODE, aby określić, czy potok zakończył się niepowodzeniem. Dzięki temu można używać ich z natywnymi poleceniami, a nie tylko z poleceniami cmdlet lub funkcjami.
Tutaj pierwsze polecenie się powiodło i drugie zostało wykonane:
Write-Output 'First' && Write-Output 'Second'
First
Second
Tutaj pierwsze polecenie nie działa, drugie nie jest wykonywane:
Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad
Tutaj pierwsze polecenie się powiodło, drugie nie jest wykonywane:
Write-Output 'First' || Write-Output 'Second'
First
Tutaj pierwsze polecenie nie działa, więc wykonywane jest drugie:
Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second
Więcej informacji o operatorach łańcuchów potoków.
Operatory zero-koalesingu, przypisania i operatory warunkowe
PowerShell 7 zawiera operator ??koalesencji Null , przypisanie ??=warunkowe Null oraz operatory ?. dostępu do członków warunkowych Null oraz ?[].
Operator zerokoalescencyjny ??
Operator ?? koalesjonujący zerowy zwraca wartość swojego lewego operandu, jeśli nie jest zerowy.
W przeciwnym razie oblicza operand po prawej stronie i zwraca jego wynik. Operator ?? nie przetwarza operandu po prawej stronie, jeśli operand po lewej stronie zwróci wartość inną niż null.
$x = $null
$x ?? 100
100
W następującym przykładzie operand prawy nie zostanie uwzględniony:
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
Operator przydziału warunkowego zerowego ?? =
Operator ??= przypisania warunkowego zera przypisuje wartość swojego operandu prawego do operandu lewego tylko wtedy, gdy operand lewy oblicza wartość zerową. Operator ??= nie przetwarza operandu po prawej stronie, jeśli operand po lewej stronie zwróci wartość inną niż null.
$x = $null
$x ??= 100
$x
100
W następującym przykładzie operand prawej strony nie jest oceniany:
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
Operatory dostępu do członków warunkowych z zerowym ?. i? [] (Eksperymentalne)
Uwaga / Notatka
Jest to eksperymentalna funkcja nazwana PSNullConditionalOperators. Więcej informacji można znaleźć w artykule Wykorzystanie cech eksperymentalnych.
Operator warunkowy null pozwala członkowi na dostęp ?.do operandu lub elementu ?[]do swojego operandu tylko wtedy, gdy ten operand jest oceniany jako niezerowy; w przeciwnym razie zwraca null.
Uwaga / Notatka
Ponieważ program PowerShell umożliwia ? być częścią nazwy zmiennej, do korzystania z tych operatorów wymagana jest formalna specyfikacja nazwy zmiennej. Dlatego należy używać {} w pobliżu nazw zmiennych, takich jak ${a} lub gdy ? jest częścią nazwy ${a?}zmiennej.
W poniższym przykładzie zwraca się wartość właściwości członkowskiej Status :
$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped
Poniższy przykład zwraca null, bez próby uzyskania dostępu do nazwy członka Status:
$service = $Null
${Service}?.status
Podobnie, używając ?[], wartość elementu zwraca się:
$a = 1..10
${a}?[0]
1
A gdy operand jest null, element nie jest dostępny i zwraca się null:
$a = $null
${a}?[0]
Więcej informacji About_Operators.
Nowy widok ConciseView i cmdlet Get-Error
PowerShell 7.0 usprawnia wyświetlanie komunikatów o błędach, aby poprawić czytelność interaktywnych i skryptowych błędów dzięki nowemu domyślnemu widokowi ConciseView. Widoki są wybierane przez użytkownika za pomocą zmiennej $ErrorViewpreferencji .
W ConciseView, jeśli błąd nie pochodzi od błędu skryptu lub parsera, to jest to komunikat o błędzie w jednej linii:
Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist
Jeśli błąd występuje podczas wykonywania skryptu lub jest błędem parsowania, PowerShell zwraca wieloliniowy komunikat o błędzie zawierający ten błąd, wskaźnik oraz komunikat o błędzie pokazujący, gdzie błąd znajduje się w danej linii. Jeśli terminal nie obsługuje sekwencji przejścia kolorów ANSI (VT100), kolory nie są wyświetlane.
Wyświetlanie błędów ze skryptu
Domyślnym widokiem w PowerShell 7 jest ConciseView. Poprzednim domyślnym widokiem był NormalView i można go wybrać, ustawiając zmienną $ErrorViewpreferencyjną.
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Uwaga / Notatka
Dodana $Host.PrivateData jest nowa właściwość ErrorAccentColor, która wspiera zmianę koloru akcentu komunikatu o błędzie.
Nowy cmdlet Get-Error zapewnia pełny, szczegółowy obraz w pełni kwalifikowanego błędu, gdy jest to potrzebne. Domyślnie cmdlet wyświetla pełne szczegóły, w tym wewnętrzne wyjątki, ostatniego błędu, który wystąpił.
Cmdlet Get-Error obsługuje wejście z pipeline za pomocą wbudowanej zmiennej $Error.
Get-Error wyświetla wszystkie błędy połączone.
$Error | Get-Error
Cmdlet Get-Error obsługuje parametr Nenew , pozwalając określić, ile błędów z bieżącej sesji chcesz wyświetlić.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Więcej informacji o Get-Error.
Powiadomienie o nowej wersji
PowerShell 7 wykorzystuje powiadomienia o aktualizacjach, aby powiadamiać użytkowników o istnieniu aktualizacji PowerShell. Raz dziennie program PowerShell wysyła zapytanie do usługi online w celu określenia, czy jest dostępna nowsza wersja.
Uwaga / Notatka
Aktualizacja odbywa się podczas pierwszej sesji w ciągu 24 godzin. Ze względów wydajnościowych sprawdzanie aktualizacji zaczyna się 3 sekundy po rozpoczęciu sesji. Powiadomienie pojawia się tylko na początku kolejnych sesji.
Domyślnie PowerShell subskrybuje jeden z dwóch różnych kanałów powiadomień, w zależności od wersji i gałęzi. Wspierane, ogólnie dostępne (GA) wersje PowerShell zwracają powiadomienia tylko o zaktualizowanych wersjach GA. Wydania Preview i Release Candidate (RC) informują o aktualizacjach dotyczących wersji preview i GA.
Zachowanie powiadomienia o aktualizacji można zmienić przy użyciu zmiennej środowiskowej $Env:POWERSHELL_UPDATECHECK. Obsługiwane są następujące wartości:
-
Domyślność jest taka sama, jak brak definicji
$Env:POWERSHELL_UPDATECHECK- Wersje ogólnodostępne informują o aktualizacjach wersji ogólnodostępnych.
- Wersje przedpremierowe/RC powiadamiają o aktualizacjach wersji ogólnie dostępnych i przedpremierowych.
- Wyłącza funkcję powiadomienia o aktualizacji
- LTS powiadamia jedynie o aktualizacjach wydań długoterminowego serwisu (LTS) GA
Uwaga / Notatka
Zmienna $Env:POWERSHELL_UPDATECHECK środowiskowa nie istnieje, dopóki nie zostanie ustawiona po raz pierwszy.
Aby ustawić powiadomienia o wersji tylko dla LTS wydań:
$Env:POWERSHELL_UPDATECHECK = 'LTS'
Aby ustawić powiadomienie o wersji na Default to zachowanie:
$Env:POWERSHELL_UPDATECHECK = 'Default'
Więcej informacji o powiadomieniach o aktualizacjach.
Nowe wsparcie zasobów DSC z Invoke-DSCResource (eksperymentalne)
Uwaga / Notatka
Jest to eksperymentalna funkcja o nazwie PSDesiredStateConfiguration.InvokeDscResource. Więcej informacji można znaleźć w artykule Wykorzystanie cech eksperymentalnych.
Cmdlet wykonuje Invoke-DscResource metodę określonego zasobu PowerShell Desired State Configuration (DSC).
Ten cmdlet wywołuje zasób DSC bezpośrednio, bez tworzenia dokumentu konfiguracyjnego. Dzięki temu cmdletowi produkty do zarządzania konfiguracją mogą zarządzać systemem Windows lub Linux, korzystając z zasobów DSC. Ten cmdlet umożliwia także debugowanie zasobów, gdy silnik DSC działa z włączonym debugowaniem.
To polecenie wywołuje metodę Set zasobu o nazwie WindowsProcess i zapewnia obowiązkowe właściwości Path i Arguments do uruchomienia określonego procesu Windows.
Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
Arguments = ''
}
Więcej informacji o Invoke-DSCResource.
Zmiany i ulepszenia
Zmiany łamiące zgodność
- Wprowadź powiadomienia o aktualizacjach, wsparcie LTS i domyślne kanały (#11132)
- Aktualizacja Test-Connection działać bardziej jak ta w Windows PowerShell (#10697) (Dzięki @vexx32!)
- Oszczędzać pieniądze? dla ParenExpression, SubExpression i ArrayExpression (#11040)
- Ustaw katalog roboczy na aktualny katalog w Start-Job (#10920) (Dzięki @iSazonov!)
- Niech $PSCulture konsekwentnie odzwierciedlają zmiany kultury podczas sesji (#10138) (Dzięki @iSazonov!)
Aktualizacje silnika i poprawki
- Ulepszenia w API punktów przerwania dla zdalnych scenariuszy (#11312)
- Napraw wyciek definicji klas PowerShell do innej przestrzeni biegowej (#11273)
- Napraw regresję formatowania spowodowaną przez prymityw FirstOrDefault dodany w 7.0.0-Preview1 (#11258)
- Dodatkowe moduły Microsoft do śledzenia w telemetrii PS7 (#10751)
- Spraw, by zatwierdzone funkcje były nieeksperymentalne (#11303)
- Zaktualizuj ConciseView do TargetObject, jeśli to możliwe (#11075)
- Fix NullReferenceException w publicznych metodach CompletionCompleters (#11274)
- Napraw sprawdzanie stanu wątków mieszkaniowych na platformach innych niż Windows (#11301)
- Aktualizacja ustawienia PSModulePath do łączenia zmiennych procesu i środowiska maszyny (#11276)
- Podnieś .NET Core do wersji 3.1.0 (#11260)
- Napraw wykrywanie $PSHOME przed $env:PATH (#11141)
- Pozwól pwsh na dziedziczenie $env:PSModulePath i włącz powershell.exe poprawne uruchomienie (#11057)
- Przejście na .NET Core 3.1 preview 1 (#10798)
- Sprawdzanie tagów reparsowania refaktoryzacji w dostawcy systemu plików (#10431) (Dzięki @iSazonov!)
- Zamień CR i nową linię na znak 0x23CE w logowaniu skryptów (#10616)
- Napraw wyciek zasobów, wyrejestrując obsługę zdarzenia w AppDomain.CurrentDomain.ProcessExit (#10626)
- Dodaj wsparcie dla ActionPreference.Break, aby włamać się do debuggera, gdy generowane są komunikaty Debug, Error, Information, Progress, Verbose lub Warning (#8205) (Dzięki @KirkMunro!)
- Włącz rozszerzenia do panelu sterowania w PowerShell bez określania .CPL rozszerzenia. (#9828)
- Wspieraj ujemne liczby w -split operatorze (#8960) (Dzięki @ece-jacob-scott!)
Aktualizacje i poprawki Ogólnego Cmdletu
- Poprawka problemu w Raspbian dotyczącego ustawiania daty zmian plików w UnixStat Experimental Feature (#11313)
- Dodaj -AsPlainText do ConvertFrom-SecureString (#11142)
- Dodano sprawdzenie wersji WindowsPS dla WinCompat (#11148)
- Naprawa zgłaszania błędów w niektórych scenariuszach WinCompat (#11259)
- Dodaj natywny binarny resolver (#11032) (Dzięki @iSazonov!)
- Zaktualizować obliczenia szerokości znaków, aby poprawnie przestrzegać postaci CJK (#11262)
- Dodaj Unblock-File dla macOS (#11137)
- Napraw regresję w Get-PSCallStack (#11210) (Dzięki @iSazonov!)
- Usuń automatyczne ładowanie modułu ScheduledJob podczas korzystania z cmdlets Job (#11194)
- Dodaj OutputType do Get-Error cmdlet i zachowaj oryginalne nazwy typów (#10856)
- Napraw odniesienie null w własności SupportsVirtualTerminal (#11105)
- Dodaj check limitu w Get-WinEvent (#10648) (Dzięki @iSazonov!)
- Napraw czas wykonywania poleceń, aby StopUpstreamCommandsException nie był wypełniany w -ErrorVariable (#10840)
- ustaw kodowanie wyjściowe na [Console]::OutputEncoding dla natywnych poleceń (#10824)
- Wspieraj wieloliniowe bloki kodu w przykładach (#10776) (Dzięki @Greg-Smulko!)
- Dodaj parametr kultury do Select-String cmdlet (#10943) (Dzięki @iSazonov!)
- Napraw ścieżkę katalogu roboczego Start-Job ukośnięciem (#11041)
- ConvertFrom-Json: Domyślnie rozpakuj kolekcje (#10861) (Dzięki @danstur!)
- Użyj hashtable zależnej od wielkich liter do Group-Object cmdlet z przełącznikami -CaseSensitive i -AsHashtable (#11030) (Dzięki @vexx32!)
- Obsłużenie wyjątku, jeśli enumeracja plików nie udaje się podczas przebudowy ścieżki, aby mieć poprawne obudowanie (#11014)
- Popraw ConciseView tak, aby wyświetlał Aktywność zamiast myCommand (#11007)
- Pozwól webowym cmdletom ignorować statusy błędów HTTP (#10466) (Dzięki @vdamewood!)
- Napraw połączenie więcej niż jednego CommandInfo do Get-Command (#10929)
- Dodaj Get-Counter cmdlet dla Windows (#10933)
- SprawConvertTo-Json traktować [AutomationNull]::Value oraz [NullString]::Value jako $null (#10957)
- Usuń nawiasy z adresu IPv6 dla SSH (#10968)
- Napraw crash, jeśli komenda wysyłana do PWSH to tylko odstęp (#10977)
- Dodano Get-Clipboard i Set-Clipboard międzyplatformowe (#10340)
- Poprawka ustawienia oryginalnej ścieżki obiektu systemu plików tak, aby nie miała dodatkowego kocionika końcowego (#10959)
- $null wsparcia dla ConvertTo-Json (#10947)
- Dodaj Out-Printer polecenie na Windows (#10906)
- Napraw Start-Job -WorkingDirectory z białą spacją (#10951)
- Wróć wartość domyślną przy uzyskaniu null dla ustawienia w PSConfiguration.cs (#10963) (Dzięki @iSazonov!)
- Obsługa wyjątku IO jako niekończącego (#10950)
- Dodaj asemblację GraphicalHost, aby umożliwić Out-GridView, Show-Command i Get-Help -ShowWindow (#10899)
- Weź ComputerName przez pipeline w Get-HotFix (#10852) (Dzięki @kvprasoon!)
- Popraw uzupełnianie tabulatorów dla parametrów, aby pokazywało wspólne parametry jako dostępne (#10850)
- Popraw GetCorrectCasedPath(), aby najpierw sprawdzić, czy zwrócono jakiekolwiek wpisy plików systemowych przed wywołaniem First() (#10930)
- Ustaw katalog roboczy na aktualny katalog w Start-Job (#10920) (Dzięki @iSazonov!)
- Zmień TabExpansion2, aby nie wymagał -CursorColumn i traktował jako $InputScript.Długość (#10849)
- Przypadek obsługi sytuacji, gdy Host nie może zwracać wierszy lub kolumn ekranu (#10938)
- Popraw użycie kolorów akcentów dla hostów, które ich nie obsługują (#10937)
- Dodaj Update-List komendę (#10922)
- Aktualizacja FWLink ID dla Clear-RecycleBin (#10925)
- Podczas uzupełniania tabulacji pomiń plik, jeśli nie możesz odczytać atrybutów pliku (#10910)
- Dodaj Clear-RecycleBin dla Windows (#10909)
- Dodaj
$env:__SuppressAnsiEscapeSequenceskontrolę, czy sekwencja ucieczki VT powinna być na wyjściu (#10814) - Dodaj -NoEmphasize parametr, aby pokolorować Select-String wynik (#8963) (Dzięki @derek-xia!)
- Dodaj Get-HotFix cmdlet (#10740)
- Spraw, by Add-Type był użyteczny w aplikacjach hostujących PowerShell (#10587)
- Użyj bardziej efektywnej kolejności oceny w LanguagePrimitives.IsNullLike() (#10781) (Dzięki @vexx32!)
- Poprawa obsługi mieszanych strumieni wejściowych i strumieni wejścia w Format-Hex (#8674) (Dzięki @vexx32!)
- Użyj konwersji typów w hashtabelach SSHConnection, gdy wartość nie odpowiada oczekiwanemu typu (#10720) (Dzięki @SeeminglyScience!)
- Napraw Get-Content -ReadCount zachowanie 0, gdy -TotalCount ustawione (#10749) (Dzięki @eugenesmlv!)
- Komunikat o błędzie odmówiony dostępu w Get-WinEvent (#10639) (Dzięki @iSazonov!)
- Włącz uzupełnianie tabulatorów dla przypisania zmiennych, które są ograniczone enumem lub typem (#10646)
- Usuń nieużywaną właściwość zdalną SourceLength powodującą problemy z formatowaniem (#10765)
- Dodaj -Delimiter parametr do ConvertFrom-StringData (#10665) (Dzięki @steviecoaster!)
- Dodaj parametr pozycyjny dla ScriptBlock przy użyciu Invoke-Command z SSH (#10721) (Dzięki @machgo!)
- Pokaż informacje o kontekście linii, jeśli jest ich wiele, ale brak nazwy skryptu dla ConciseView (#10746)
- Dodaj wsparcie dla \wsl$\ ścieżek do dostawcy systemu plików (#10674)
- Dodaj brakujący tekst tokena dla TokenKind.QuestionMark w parserze (#10706)
- Ustaw aktualny katalog roboczy każdego ForEach-Object -Parallel działającego skryptu na to samo miejsce co wywołujący skrypt. (#10672)
- Zastąp api-ms-win-core-file-l1-2-2.dll Kernell32.dll na API FindFirstStreamW i FindNextStreamW (#10680) (Dzięki @iSazonov!)
- Zmodyfikuj skrypt formatowania pomocy, aby był bardziej tolerancyjny na StrictMode (#10563)
- Dodaj -SecurityDescriptorSDDL parametr do New-Service (#10483) (Dzięki @kvprasoon!)
- Usuń wyjście informacyjne, skonsoliduj użycie pingu w Test-Connection (#10478) (Dzięki @vexx32!)
- Przeczytaj specjalne punkty reparsacyjne bez dostępu do nich (#10662) (Dzięki @iSazonov!)
- Bezpośrednie wyjście Clear-Host do terminala (#10681) (Dzięki @iSazonov!)
- Dodaj nową linię do grupowania z Format-Table i -Property (#10653)
- Usuń [ValidateNotNullOrEmpty] z -InputObject on Get-Random, aby umożliwić pusty ciąg (#10644)
- Ułóż algorytm systemu sugeracji w odległości ciągów znaków liter nierozróżniających wielka liter (#10549) (Dzięki @iSazonov!)
- Napraw wyjątek odniesienia null w przetwarzaniu ForEach-Object -Parallel wejściowym (#10577)
- Dodaj definicje polityk grupowych PowerShell (#10468)
- Zaktualizuj host konsoli, aby wspierać sekwencje sterowania XTPUSHSGR/XTPOPSGR VT używane w scenariuszach kompozycji. (#10208)
- Dodaj parametr WorkingDirectory do Start-Job (#10324) (Dzięki @davinci26!)
- Usuń obsługę zdarzeń, która powodowała błędne replikowanie zmian punktów przerwania do debugera w przestrzeni biegu hosta (#10503) (Dzięki @KirkMunro!)
- Zastąp api-ms-win-core-job-12-1-0.dll Kernell32.dll w Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Dzięki @iSazonov!)
- Popraw błędne wyjście dla New-Service w przypisaniu zmiennych i -OutVariable (#10444) (Dzięki @kvprasoon!)
- Napraw globalne problemy z narzędziami dotyczącymi kodu wyjścia, parametrów wiersza poleceń i ścieżki za pomocą spacji (#10461)
- Napraw rekurencję w OneDrive – zmień FindFirstFileEx() na typ SafeFindHandle (#10405)
- Pomiń automatyczne ładowanie PSReadLine w Windowsie, jeśli czytnik ekranu NVDA jest aktywny (#10385)
- Zwiększenie wersji modułów zbudowanych z PowerShell do wersji 7.0.0.0 (#10356)
- Dodaj do tego błąd w Add-Type jeśli istnieje typ o tej samej nazwie (#9609) (Dzięki @iSazonov!)
Performance
- Unikaj używania closure w Parser.SaveError (#11006)
- Popraw buforowanie przy tworzeniu nowych instancji Regex (#10657) (Dzięki @iSazonov!)
- Usprawnienie przetwarzania wbudowanych danych typowych PowerShell z types.ps1xml, typesV3.ps1xml oraz GetEvent.types.ps1xml (#10898)
- Zaktualizuj PSConfiguration.ReadValueFromFile, aby był szybszy i bardziej efektywny w pamięci (#10839)
- Dodaj drobne poprawy wydajności dla inicjalizacji przestrzeni roboczej (#10569) (Dzięki @iSazonov!)
- Przyspiesz ForEach-Object dla najczęściej używanych scenariuszy (#10454) i napraw ForEach-Object -Parallel problem z wydajnością w wielu przestrzeniach biegowych (#10455)
Oczyszczanie kodu
- Zmień komentarz i tekst elementów, aby spełnić standardy Microsoft (#11304)
- Problemy ze stylem sprzątania w Compiler.cs (#10368) (Dzięki @iSazonov!)
- Usuń nieużywany konwerter typów dla CommaDelimitedStringCollection (#11000) (Dzięki @iSazonov!)
- Styl sprzątania w InitialSessionState.cs (#10865) (Dzięki @iSazonov!)
- Czyszczenie kodu dla klasy PSSession (#11001)
- Usuń niedziałającą funkcję 'uruchom Update-Help z Get-Help, gdy Get-Help uruchamia po raz pierwszy' (#10974)
- Napraw problemy ze stylem (#10998) (Dzięki @iSazonov!)
- Czyszczenie: użyj wbudowanego aliasu typu (#10882) (Dzięki @iSazonov!)
- Usuń nieużywany klucz ustawienia ConsolePrompting i unikaj niepotrzebnego tworzenia ciągów znaków podczas zapytania do ustawienia ExecutionPolicy (#10985)
- Wyłącz sprawdzanie powiadomień o aktualizacjach dla codziennych buildów (#10903) (Dzięki @bergmeister!)
- Reinstate bugugging API utracone w #10338 (#10808)
- Usuń odwołanie do WorkflowJobSourceAdapter, które już nie jest używane (#10326) (Dzięki @KirkMunro!)
- Czyszczenie interfejsów COM w kodzie listy skoków poprzez naprawę atrybutów PreserveSig (#9899) (Dzięki @weltkante!)
- Dodaj komentarz wyjaśniający, dlaczego -ia nie jest aliasem -InformationAction wspólnego parametru (#10703) (Dzięki @KirkMunro!)
- Zmienij InvokeCommandCmdlet.cs nazwę na InvokeExpressionCommand.cs (#10659) (Dzięki @kilasuit!)
- Dodaj drobne poprawki kodu związane z powiadomieniami o aktualizacjach (#10698)
- Usuń przestarzałą logikę workflow ze skryptów ustawień zdalnych (#10320) (Dzięki @KirkMunro!)
- Zaktualizuj format pomocy, aby używać właściwej skrzynki (#10678) (Dzięki @tnieto88!)
- Usuwanie problemów ze stylem CodeFactor, które pojawiają się w commitach od miesiąca (#10591) (Dzięki @iSazonov!)
- Poprawa literówki w opisie eksperymentalnej funkcji PSTernaryOperator (#10586) (Dzięki @bergmeister!)
- Przekonwertuj ActionPreference. Zawiesz wartość enumeracji do stanu nieobsługiwanego, zarezerwowanego i usuń ograniczenie używania ActionPreference. Ignoruj zmienne preferencyjne (#10317) (Dzięki @KirkMunro!)
- Zamień ArrayList na List<T> , aby uzyskać bardziej czytelny i niezawodny kod bez zmiany funkcjonalności (#10333) (Dzięki @iSazonov!)
- Popraw styl kodu dla TestConnectionCommand (#10439) (Dzięki @vexx32!)
- Oczyszczenie AutomationEngine i usunięcie dodatkowego wywołania metody SetSessionStateDrive (#10416) (Dzięki @iSazonov!)
- Przemianowanie domyślnego ParameterSetName z powrotem na Delimiter for ConvertTo-Csv i ConvertFrom-Csv (#10425)
Tools
- Dodaj domyślne ustawienie dla właściwości SDKToUse, aby budowała się w VS (#11085)
- Install-Powershell.ps1: Dodaj parametr do korzystania z instalacji MSI (#10921) (Dzięki @MJECloud!)
- Dodaj podstawowe przykłady dla install-powershell.ps1 (#10914) (Dzięki @kilasuit!)
- Niech Install-PowerShellRemoting.ps1 obsługuje pusty ciąg w parametrze PowerShellHome (#10526) (Dzięki @Orca88!)
- Przełącz z /etc/lsb-release na /etc/os-release w install-powershell.sh (#10773) (Dzięki @Himura2la!)
- Sprawdź pwsh.exe i pwsh w wersji codziennej na Windows (#10738) (Dzięki @centreboard!)
- Usuń niepotrzebny kran w installpsh-osx.sh (#10752)
- Aktualizacja install-powershell.ps1, aby sprawdzić, czy jest już zainstalowana codzienna wersja (#10489)
Testy
- Niewiarygodny test DSC w trakcie oczekiwania (#11131)
- Popraw test stringdata w celu poprawnej weryfikacji kluczy tablic haszujących (#10810)
- Unload testowe moduły (#11061) (Dzięki @iSazonov!)
- Zwiększenie czasu między próbami testowego adresu URL (#11015)
- Aktualizuj testy, aby dokładnie opisywały działania testowe. (#10928) (Dzięki @romero126!)
- Temporary skip the flaky test TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
- Spraw, by test wycieku w obsłudze zdarzeń stały (#10790)
- Synchronizacja wielkich liter w CI YAML (#10767) (Dzięki @RDIL!)
- Dodaj test poprawki wycieku w obsłudze zdarzeń (#10768)
- Add Get-ChildItem test (#10507) (Dzięki @iSazonov!)
- Zastąpienie niejednoznacznego języka dla testów z przełączania na parametr dla dokładności (#10666) (Dzięki @romero126!)
- Dodaj test eksperymentalny do testów ForEach-Object -Parallel (#10354) (Dzięki @KirkMunro!)
- Aktualizacja testów walidacji Alpine (#10428)
Ulepszenia budowy i pakietów
- Napraw podpisywanie pakietów Nuget dla komendowanego pakietu (#11316)
- Aktualizuj zależności z PowerShell Gallery i NuGet (#11323)
- Bump Microsoft.ApplicationInsights z wersji 2.11.0 do 2.12.0 (#11305)
- Bump Microsoft.CodeAnalysis.CSharp z 3.3.1 do 3.4.0 (#11265)
- Pakiety aktualizacji dla Debiana 10 i 11 (#11236)
- Włączać tylko funkcje eksperymentalne przed RC (#11162)
- Aktualizacja minimalnej wersji macOS (#11163)
- Bump NJsonSchema od 10.0.27 do 10.0.28 (#11170)
- Aktualizacja linków w README.md i metadata.json dla Preview.5 (#10854)
- Wybierz pliki do testów zgodności, które należą do PowerShell (#10837)
- Pozwól na budowę pakietu msix win7x86. (Wewnętrzne 10515)
- Pozwól na przekazywanie wersji semantycznych do funkcji NormalizeVersion (#11087)
- Bump .NET core framework to 3.1-preview.3 (#11079)
- Podnieś PSReadLine z wersji 2.0.0-beta5 do 2.0.0-beta6 w /src/Modules (#11078)
- Zwiększ Newtonsoft.Json z 12.0.2 do 12.0.3 (#11037) (#11038)
- Dodaj pakiety Debian 10, 11 i CentOS 8 (#11028)
- Prześlij plik Json Build-Info polem ReleaseDate (#10986)
- Bump .NET core framework to 3.1-preview.2 (#10993)
- Włącz kompilację pakietu x86 MSIX (#10934)
- Zaktualizuj URL skryptu instalacyjnego dotnet SDK w build.psm1 (#10927)
- Bump Markdig. Podpisano z 0.17.1 do 0.18.0 (#10887)
- Bump ThreadJob z wersji 2.0.1 do 2.0.2 (#10886)
- Zaktualizuj moduł AppX Manifest and Packaging, aby spełniał wymagania MS Store (#10878)
- Aktualizuj package reference for PowerShell SDK to preview.5 (Internal 10295)
- Aktualizacja ThirdPartyNotices.txt (#10834)
- Bump Microsoft.PowerShell.Native to 7.0.0-preview.3 (#10826)
- Bump Microsoft.ApplicationInsights z wersji 2.10.0 do 2.11.0 (#10608)
- Bump NJsonSchema z 10.0.24 do 10.0.27 (#10756)
- Dodaj wsparcie MacPorts do systemu budowania (#10736) (Dzięki @Lucius-Q-User!)
- Zarządzanie pakietami Bump od 1.4.4 do 1.4.5 (#10728)
- Bump NJsonSchema z 10.0.23 do 10.0.24 (#10635)
- Dodaj zmienną środowiskową, aby rozróżnić telemetrię klient/serwer w MSI (#10612)
- Bump PSDesiredStateConfiguration z wersji 2.0.3 do 2.0.4 (#10603)
- Wzmocnienie Microsoft.CodeAnalysis.CSharp z wersji 3.2.1 do 3.3.1 (#10607)
- Aktualizacja do .Net Core 3.0 RTM (#10604) (Dzięki @bergmeister!)
- Zaktualizuj opakowanie MSIX, aby wersja spełniała wymagania Windows Store (#10588)
- Bump PowerShellGet version from 2.2 to 2.2.1 (#10382)
- Wersja Bump PackageManagement od 1.4.3 do 1.4.4 (#10383)
- Aktualizacja README.md i metadata.json dla wersji 7.0.0-preview.4 (Internal 10011)
- Aktualizacja wersji .Net Core 3.0 z Preview 9 do RC1 (#10552) (Dzięki @bergmeister!)
- Napraw eksperymentalneGenerowanie listy cech (Wewnętrzne 9996)
- Zwiększ wersję PSReadLine z 2.0.0-beta4 na 2.0.0-beta5 (#10536)
- Napraw skrypt build release na ustaw tag release
- Aktualizacja wersji Microsoft.PowerShell.Native do 7.0.0-preview.2 (#10519)
- Aktualizacja do Netcoreapp3.0 preview9 (#10484) (Dzięki @bergmeister!)
- Upewnij się, że codzienna skoordynowana budowa wie, że to codzienna budowa (#10464)
- Zaktualizuj połączony pakiet, aby wypuścić codzienne buildy (#10449)
- Usuń referencję aplikatora (#10445) (Dzięki @RDIL!)
- Wersja Bump NJsonSchema od 10.0.22 do 10.0.23 (#10421)
- Usuń usunięcie folderu linux-x64 build, ponieważ niektóre zależności dla Alpine tego wymagają (#10407)
Dokumentacja i materiały pomocnicze
- Refaktoryzacja logów zmiany logów w jeden na wydanie (#11165)
- Fix FWLinks for PowerShell 7 online help documents (#11071)
- Aktualizacja CONTRIBUTING.md (#11096) (Dzięki @mklement0!)
- Linki do dokumentu instalacyjnego poprawek w README.md (#11083)
- Dodaje przykłady do install-powershell.ps1 scenariusza (#11024) (Dzięki @kilasuit!)
- Poprawka Select-String akcentu i Import-DscResource w CHANGELOG.md (#10890)
- Usuń przestarzały link z powershell-beginners-guide.md (#10926)
- Logi zmian stabilnych i serwisujących (#10527)
- Aktualizacja używa wersji .NET w dokumentacji budowania (#10775) (Dzięki @Greg-Smulko!)
- Zamień linki z MSDN do Microsoft Learn w powershell-beginners-guide.md (#10778) (Dzięki @iSazonov!)
- Napraw uszkodzony link przeglądowy DSC (#10702)
- Aktualizacja Support_Question.md, aby odkaza do Stack Overflow jako kolejnego zasobu społecznościowego (#10638) (Dzięki @mklement0!)
- Dodaj architekturę procesora do szablonu żądania dystrybucji (#10661)
- Dodaj nową książkę PowerShell MoL do dokumentacji PowerShell (#10602)
- Aktualizacja README.md i metadane dla wersji v6.1.6 i v6.2.3 (#10523)
- Popraw literówkę w README.md (#10465) (Dzięki @vedhasp!)
- Dodaj odnośnik do modułu PSKoans w dokumentacji Learning Resources (#10369) (Dzięki @vexx32!)
- Aktualizacja README.md i metadata.json dla wersji 7.0.0-preview.3 (#10393)