Udostępnij za pośrednictwem


Co nowego w programie PowerShell Core 6.2

Wersja programu PowerShell Core 6.2 koncentruje się na ulepszeniach wydajności, poprawkach usterek i mniejszych ulepszeniach poleceń cmdlet i języka, które zwiększają jakość. Aby wyświetlić pełną listę ulepszeń, zapoznaj się z naszymi szczegółowymi dziennikami zmian w usłudze GitHub.

Funkcje eksperymentalne

Wcześniej włączyliśmy obsługę funkcji eksperymentalnych. W wersji 6.2 mamy cztery funkcje eksperymentalne do wypróbowania. Prześlij opinię, abyśmy mogli wprowadzić ulepszenia i zdecydować, czy funkcja warto promować stan głównego nurtu.

Użyj Get-ExperimentalFeature polecenia , aby uzyskać listę dostępnych funkcji eksperymentalnych. Możesz włączyć lub wyłączyć te funkcje za pomocą polecenia Enable-ExperimentalFeature i Disable-ExperimentalFeature.

Nie znaleziono sugestii dotyczących poleceń

Ta funkcja używa dopasowywania rozmytego, aby znaleźć sugestie dotyczące poleceń lub poleceń cmdlet, które mogły zostać błędnie wtypowane.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Przykład

W tym przykładzie błędna nazwa polecenia cmdlet jest rozmyta dopasowana do kilku sugestii z najbardziej prawdopodobnego, co najmniej prawdopodobne.

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.

Niejawne dzielenie na partie za pośrednictwem komunikacji bezpośredniej

W przypadku korzystania z niejawnej komunikacji zdalnej w potoku program PowerShell traktuje każde polecenie w potoku niezależnie. Obiekty są wielokrotnie serializowane i de-serialized między klientem a systemem zdalnym w ramach wykonywania potoku.

Dzięki tej funkcji program PowerShell analizuje potok, aby określić, czy polecenie jest bezpieczne do uruchomienia i istnieje w systemie docelowym. W przypadku wartości true program PowerShell wykonuje cały potok zdalnie i tylko serializuje i de-serializes wyniki z powrotem do klienta.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Rzeczywisty test Get-Process | Sort-Object over localhost zmniejsza się z 10-15 sekund do 20-30 milisekund. Funkcja musi być włączona tylko na kliencie. Na serwerze nie są wymagane żadne zmiany.

Dysk tymczasowy

Enable-ExperimentalFeature -Name PSTempDrive

Jeśli używasz programu PowerShell Core w różnych systemach operacyjnych, dowiesz się, że zmienna środowiskowa do znajdowania katalogu tymczasowego różni się w systemach Windows, macOS i Linux! Dzięki tej funkcji uzyskasz nazwę PSDrive o nazwie Temp: , która jest automatycznie mapowana do folderu tymczasowego używanego systemu operacyjnego.

Przykład

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

Należy pamiętać, że natywne polecenia plików (takie jak ls w systemie Linux) nie są świadome usługi PSDrives i nie będą widzieć tego Temp: dysku.

Rozszerzanie skrótów

Oczekuje się, że polecenia cmdlet programu PowerShell będą miały opisowe nouns. Powoduje to, że długie nazwy są trudniejsze do wpisywania. Ta funkcja pozwala po prostu wpisać wielkie litery polecenia cmdlet i użyć uzupełniania tabulatora, aby znaleźć dopasowanie.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Przykład

PS> i-arsavsf

Po naciśnięciu karty i zainstalowaniu modułu Azure PowerShell Az zostanie on automatycznie wypełniony:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Uwaga

Ta funkcja ma być używana interaktywnie. Nie można wykonać skróconych formularzy poleceń cmdlet. Ta funkcja nie zastępuje aliasów.

Zmiany powodujące niezgodność

  • Napraw -NoEnumerate zachowanie w Write-Output celu zapewnienia spójności z Windows PowerShell. (#9069)
  • Wynik jest Join-String -InputObject 1,2,3 równy 1,2,3 | Join-String wynikowi (#8611) (Dzięki @sethvs!)
  • Dodaj -Stable do Sort-Object i powiązane testy (#7862) (Dzięki @KirkMunro!)
  • Ulepszanie Start-Sleep polecenia cmdlet w celu akceptowania sekund ułamkowych (#8537) (Dzięki @Prototyyppi!)
  • Zmień tabelę skrótu, aby używać metody OrdinalIgnoreCase, aby znajdować się case-insensitive we wszystkich kulturach (#8566)
  • Napraw element LiteralPath w Import-Csv celu powiązania z Get-ChildItem danymi wyjściowymi (#8277) (Dzięki @iSazonov!)
  • Nie pomija już kolumny bez nazwy, jeśli ogranicznik podwójnego cudzysłowu jest używany w Import-Csv pliku (#7899) (Dzięki @Topping!)
  • Get-ExperimentalFeature nie ma już przełącznika -ListAvailable (#8318)
  • Parametr debugowania ustawia $DebugPreference teraz wartość Kontynuuj , a nie Inquire (#8195) (Dzięki @KirkMunro!)
  • Honoruj -OutputFormat , jeśli określono w nieinterakcyjnym, przekierowanym, zakodowanym poleceniu używanym z programem pwsh (#8115)
  • Ładowanie zestawu ze ścieżki bazowej modułu przed próbą załadowania z usługi GAC (#8073)
  • Usuwanie tyldy z pakietów wersji zapoznawczej systemu Linux (#8244)
  • Przenoszenie przetwarzania -WorkingDirectory przed przetwarzaniem profilów (#8079)
  • Nie dodawaj PATHEXT zmiennej środowiskowej w systemie Unix (#7697) (Dzięki @iSazonov!)

Znane problemy

  • Komunikacja zdalna na platformach ARM systemu Windows iOT ma problem z ładowaniem modułów. Zobacz (#8053)

Ogólne Aktualizacje i poprawki

  • Włącz uzupełnianie kart bez uwzględniania wielkości liter dla plików i folderów w systemie plików z uwzględnieniem wielkości liter (#8128)
  • Upublicznij plik PSVersionInfo.PSVersion i PSVersionInfo.PSEdition (#8054) (dzięki @KirkMunro!)
  • Dodawanie wnioskowania typu dla $_ / $PSItem bloków catch{ } (#8020) (Dzięki @vexx32!)
  • Naprawiono wnioskowanie typu metody statycznej (#8018) (Dzięki @SeeminglyScience!)
  • Twórca wywnioskowanych typów dla Select-Objectobiektów , , Group-ObjectPSObject i hashtable (#7231) (Dzięki@powercode!)
  • Obsługa metody wywoływania z parametrami ByRef-like typu (#7721)
  • Obsługa przypadku, w którym ścieżka modułu Windows PowerShell znajduje się już w ścieżce PSModulePath środowiska (#7727)
  • Włącz SecureString polecenia cmdlet dla systemu spoza systemu Windows, przechowując zwykły tekst (#9199)
  • Poprawianie komunikatu o błędzie w systemie innych niż Windows podczas importowania interfejsu clixml przy użyciu protokołu securestring (#7997)
  • Dodawanie parametru ReplyTo do Send-MailMessage (#8727) (Dziękujemy) @replicaJunction!)
  • Dodaj przestarzałą wiadomość do Send-MailMessage (#9178)
  • Poprawka Restart-Computer do działania, localhost gdy usługa WinRM nie jest obecna (#9160)
  • Zgłaszaj Start-Job błąd zakończenia, gdy program PowerShell jest hostowany (#9128)
  • Dodaj akceleratory typów stylów języka C# i sufiksy dla elementów ushort, uint, ulong i krótkich literałów (#7813) (Dzięki @vexx32!)
  • Dodano nowe sufiksy literałów liczbowych — zobacz about_Numeric_Literals (#7901) (Dzięki @vexx32!)
  • Prawidłowy poziom wpływu raportu, gdy wartość SupportsShouldProcess nie jest ustawiona na wartość "true" (#8209) (Dzięki @vexx32!)
  • Rozwiązywanie problemów z żądaniami charset w poleceniach cmdlet sieci Web (#8742) (dzięki @markekraus!)
  • Rozwiązano problem z oczekiwanymi 100-continue poleceniami cmdlet sieci Web (#8679) (Dziękujemy) @markekraus!)
  • Rozwiązano problem z blokowaniem plików za pomocą poleceń cmdlet sieci Web (#7676) (Dzięki @Claustn!)
  • Rozwiązano problem z analizowaniem strony kodu w programie Invoke-RestMethod (#8694) (Dzięki @markekraus!)
  • Refaktoryzacja ConvertTo-Json w celu uwidocznienia pliku JsonObject.ConvertToJson jako publicznego interfejsu API (#8682)
  • Dodaj konfigurowalną maksymalną głębokość za ConvertFrom-Json pomocą parametru -Depth (#8199) (Dzięki @louistio!)
  • Dodaj parametr EscapeHandling w ConvertTo-Json poleceniu cmdlet (#7775) (Dzięki @iSazonov!)
  • Dodaj -CustomPipeName do programu pwsh i Enter-PSHostProcess (#8889)
  • Włączanie tworzenia względnych linków symbolicznych w systemie Windows za pomocą New-Item polecenia (#8783)
  • Zezwalaj użytkownikom systemu Windows w trybie dewelopera na tworzenie linków symlinków bez podniesienia uprawnień (#8534)
  • Włącz Write-Information akceptowanie $null (#8774)
  • Poprawka Get-Help dotycząca funkcji zaawansowanych z zawartością pomocy MAML (#8353)
  • Rozwiązano Get-Help problem z parametrem PSTypeName, gdy zadeklarowano tylko jeden parametr (#8754) (Dzięki @pougetat!)
  • Poprawka obliczania tokenu dla Get-Help wykonywanego w skrypcie ScriptBlock, aby uzyskać pomoc dotyczącą komentarza. (#8238) (Dzięki @hubuk!)
  • Zmień Get-Help polecenie cmdlet -Parametr, aby akceptował tablice ciągów (#8454) (Dzięki @sethvs!)
  • Rozwiąż problem PAGER, jeśli jego ścieżka zawiera spacje (#8571) (Dzięki @pougetat!)
  • Dodaj monit o użycie less polecenia w funkcji "help", aby poinstruować użytkownika, jak zamknąć program (#7998)
  • Dodawanie typów Format-Hex wyliczenia i znaków w poleceniu cmdlet (#8191) (Dzięki @iSazonov!)
  • Remove ShouldProcess from Format-Hex (#8178)
  • Dodawanie nowych parametrów przesunięcia i liczby do Format-Hex i refaktoryzację polecenia cmdlet (#7877) (Dzięki @iSazonov!)
  • Zezwalaj na wartość "name" jako klucz aliasu dla etykiety w programie ConvertTo-Html, zezwalaj na wpis "width" jako liczbę całkowitą (#8426) (Dzięki @mklement0!)
  • Utwórz ponownie właściwości ConvertTo-Html obliczeniowe oparte na skrybloku (#8427) (Dzięki @mklement0!)
  • Dodaj polecenie cmdlet Join-String do tworzenia tekstu na podstawie danych wejściowych potoku (#7660) (Dzięki @powercode!)
  • Poprawiono Join-String logikę parametru FormatString polecenia cmdlet (#8449) (Dziękujemy) @sethvs!)
  • Zmień z Clear-Host powrotem na używanie $RAWUI i wyczyść, aby pracować nad komunikacji zdalną (#8609)
  • Zmień wartość Clear-Host na po prostu wywołaną [console]::clear i usuń wyczyść alias z systemu Unix (#8603)
  • Napraw element LiteralPath w Import-Csv celu powiązania z Get-ChildItem danymi wyjściowymi (#8277) (Dzięki @iSazonov!)
  • funkcja help nie powinna używać pager aliasHelpInfo (#8552)
  • Dodaj -UseMinimalHeader do, Start-Transcript aby zminimalizować nagłówek transkrypcji (#8402) (Dzięki @lukexjeremy!)
  • Dodawanie Enable-ExperimentalFeature poleceń cmdlet i Disable-ExperimentalFeature (#8318)
  • Uwidaczniaj wszystkie polecenia cmdlet z programu PSDiagnostics , jeśli logman.exe jest dostępna (#8366)
  • Usuń parametr Persist z New-PSDrive platformy non-Windows (#8291) (Dzięki @lukexjeremy!)
  • Dodaj obsługę ( cd + #7206) (Dzięki @bergmeister!)
  • Włącz Set-Location -LiteralPath pracę z folderami o nazwie - i + (#8089)
  • Test-Path zwraca $false wartość w przypadku wartości pustej lub $null ścieżki (#8080) (Dzięki @vexx32!)
  • Zezwalaj na zwracanie parametru dynamicznego, nawet jeśli ścieżka nie jest zgodna z żadnym dostawcą (#7957)
  • Obsługa Get-PSHostProcessInfo i Enter-PSHostProcess na platformach Unix (#8232)
  • Zmniejsz alokacje w Get-Content poleceniu cmdlet (#8103) (Dzięki @iSazonov!)
  • Włącz Add-Content udostępnianie dostępu do odczytu innym narzędziom podczas pisania zawartości (#8091)
  • Get/Add-Content zgłasza ulepszony błąd podczas określania wartości docelowej kontenera (#7823) (Dzięki @kvprasoon!)
  • -NoUserOverrides Dodawanie -Nameparametrów i do Get-Culture-ListAvailable polecenia cmdlet (#7702) (Dziękujemy)@iSazonov!)
  • Dodaj ujednolicony atrybut do ukończenia dla parametru Kodowanie . (#7732) (Dzięki @ThreeFive-O!)
  • Zezwalaj na identyfikatory liczbowe i nazwy zarejestrowanych stron kodu w parametrach kodowania (#7636) (Dzięki @iSazonov!)
  • Poprawka Rename-Item -Path z symbolem wieloznacznymi (#7398) (Dzięki @kwkam!)
  • W przypadku używania Start-Transcript pliku i istnieje pusty plik, a nie usuwanie (#8131) (Dzięki @paalbra!)
  • Utwórz Add-Type pliki open source za pomocą funkcji FileAccess.Read i FileShare.Read jawnie (#7915) (Dzięki@IISResetMe!)
  • Poprawka Enter-PSSession -ContainerId dotycząca najnowszego systemu Windows (#7883)
  • Upewnij się, że właściwość NestedModules jest wypełniana przez Test-ModuleManifest (#7859)
  • Dodaj %F przypadek do Get-Date -UFormat (#7630) (Dzięki @britishben!)
  • Poprawka Set-Service -Status Stopped do zatrzymywania usług z zależnościami (#5525) (Dzięki @zhenggu!)