Migrowanie z programu Windows PowerShell 5.1 do programu PowerShell 7

Przeznaczony dla środowisk chmurowych, lokalnych i hybrydowych program PowerShell 7 jest wyposażony w ulepszenia i nowe funkcje.

  • Instaluje i uruchamia program Windows PowerShell obok siebie
  • Ulepszona zgodność z istniejącymi modułami programu Windows PowerShell
  • Nowe funkcje językowe, takie jak operatoryternarne i ForEach-Object -Parallel
  • Zwiększona wydajność
  • Komunikacja zdalna oparta na protokole SSH
  • Współdziałanie międzyplatformowe
  • Obsługa kontenerów platformy Docker

Program PowerShell 7 działa równolegle z programem Windows PowerShell, dzięki czemu można łatwo testować i porównywać wersje przed wdrożeniem. Migracja jest prosta, szybka i bezpieczna.

Program PowerShell 7 jest obsługiwany w następujących systemach operacyjnych Windows:

  • Windows 10 i 11
  • Windows Server 2016, 2019 i 2022

Program PowerShell 7 działa również w systemach macOS i kilku dystrybucjach systemu Linux. Aby uzyskać listę obsługiwanych systemów operacyjnych i informacje o cyklu wsparcia technicznego, zobacz Cykl wsparcia programu PowerShell.

Instalowanie programu PowerShell 7

Aby zapewnić elastyczność i obsługę potrzeb działu IT, inżynierów DevOps i deweloperów, dostępnych jest kilka opcji instalacji programu PowerShell 7. W większości przypadków opcje instalacji można zmniejszyć do następujących metod:

  • Wdrażanie programu PowerShell przy użyciu pakietu MSI
  • Wdrażanie programu PowerShell przy użyciu pakietu ZIP

Uwaga

Pakiet MSI można wdrożyć i zaktualizować za pomocą produktów do zarządzania, takich jak Microsoft Configuration Manager. Pobierz pakiety ze strony wydania usługi GitHub.

Wdrożenie pakietu MSI wymaga uprawnień Administracja istratora. Pakiet ZIP można wdrożyć przez dowolnego użytkownika. Pakiet ZIP jest najprostszym sposobem zainstalowania programu PowerShell 7 na potrzeby testowania przed zatwierdzeniem pełnej instalacji.

Program PowerShell 7 można również zainstalować za pośrednictwem Sklepu Windows lub winget. Aby uzyskać więcej informacji na temat obu tych metod, zobacz szczegółowe instrukcje w temacie Instalowanie programu PowerShell w systemie Windows.

Używanie programu PowerShell 7 obok siebie w programie Windows PowerShell 5.1

Program PowerShell 7 jest przeznaczony do współistnienia z programem Windows PowerShell 5.1. Poniższe funkcje zapewniają ochronę inwestycji w program PowerShell, a migracja do programu PowerShell 7 jest prosta.

  • Oddzielna ścieżka instalacji i nazwa pliku wykonywalnego
  • Oddzielna ścieżka PSModulePath
  • Oddzielne profile dla każdej wersji
  • Ulepszona zgodność modułu
  • Nowe punkty końcowe komunikacji wirtualnej
  • Obsługa zasad grupy
  • Oddzielne dzienniki zdarzeń

Oddzielna ścieżka instalacji i nazwa pliku wykonywalnego

Program PowerShell 7 jest instalowany w nowym katalogu, umożliwiając wykonywanie równoległe za pomocą programu Windows PowerShell 5.1.

Zainstaluj lokalizacje według wersji:

  • Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell 6.x: $env:ProgramFiles\PowerShell\6
  • PowerShell 7: $env:ProgramFiles\PowerShell\7

Nowa lokalizacja jest dodawana do ścieżki, co umożliwia uruchamianie zarówno programu Windows PowerShell 5.1, jak i programu PowerShell 7. Jeśli przeprowadzasz migrację z programu PowerShell 6.x do programu PowerShell 7, program PowerShell 6 zostanie usunięty, a ścieżka została zamieniona.

W programie Windows PowerShell plik wykonywalny programu PowerShell nosi nazwę powershell.exe. W wersji 6 lub nowszej plik wykonywalny nosi nazwę pwsh.exe. Nowa nazwa ułatwia obsługę równoległego wykonywania obu wersji.

Oddzielna ścieżka PSModulePath

Domyślnie program Windows PowerShell i program PowerShell 7 przechowują moduły w różnych lokalizacjach. Program PowerShell 7 łączy te lokalizacje w zmiennej środowiskowej $Env:PSModulePath . Podczas importowania modułu według nazwy program PowerShell sprawdza lokalizację określoną przez $Env:PSModulePathprogram . Dzięki temu program PowerShell 7 może ładować moduły Core i Desktop.

Zakres instalacji Windows PowerShell 5.1 PowerShell 7.0
Moduły programu PowerShell $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $PSHOME\Modules
Zainstalowany użytkownik
Zakres AllUsers
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
Zainstalowany użytkownik
Bieżący zakres użytkownika
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

W poniższych przykładach przedstawiono wartości $Env:PSModulePath domyślne dla każdej wersji.

  • W przypadku programu Windows PowerShell 5.1:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\WindowsPowerShell\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    
  • Dla programu PowerShell 7:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\PowerShell\Modules
    C:\Program Files\PowerShell\Modules
    C:\Program Files\PowerShell\7\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    

Zwróć uwagę, że program PowerShell 7 zawiera ścieżki programu Windows PowerShell i ścieżki programu PowerShell 7 w celu zapewnienia automatycznego ładowania modułów.

Uwaga

Dodatkowe ścieżki mogą istnieć, jeśli zmieniono zmienną środowiskową PSModulePath lub zainstalowano niestandardowe moduły lub aplikacje.

Aby uzyskać więcej informacji, zobacz about_PSModulePath.

Aby uzyskać więcej informacji na temat modułów, zobacz about_Modules.

Oddzielne profile

Profil programu PowerShell to skrypt, który jest wykonywany po uruchomieniu programu PowerShell. Ten skrypt dostosowuje środowisko, dodając polecenia, aliasy, funkcje, zmienne, moduły i dyski programu PowerShell. Skrypt profilu udostępnia te dostosowania w każdej sesji bez konieczności ręcznego ich ponownego tworzenia.

Ścieżka do lokalizacji profilu została zmieniona w programie PowerShell 7.

  • W programie Windows PowerShell 5.1 lokalizacja profilu to $HOME\Documents\WindowsPowerShell.
  • W programie PowerShell 7 lokalizacja profilu to $HOME\Documents\PowerShell.

Zmieniono również nazwy plików profilu:

$PROFILE | Select-Object *Host* | Format-List
 AllUsersAllHosts       : C:\Program Files\PowerShell\7\profile.ps1
 AllUsersCurrentHost    : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
 CurrentUserAllHosts    : C:\Users\<user>\Documents\PowerShell\profile.ps1
 CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Aby uzyskać więcej informacji about_Profiles.

Zgodność programu PowerShell 7 z modułami programu Windows PowerShell 5.1

Większość modułów używanych w programie Windows PowerShell 5.1 już współpracuje z programem PowerShell 7, w tym programem Azure PowerShell i usługą Active Directory. Kontynuujemy pracę z innymi zespołami, aby dodać natywną obsługę programu PowerShell 7, aby uzyskać więcej modułów, w tym programu Microsoft Graph, usługi Office 365 i innych. Aby uzyskać bieżącą listę obsługiwanych modułów, zobacz zgodność modułów programu PowerShell 7.

Uwaga

W systemie Windows dodaliśmy również przełącznik UseWindowsPowerShell , aby Import-Module ułatwić przejście do programu PowerShell 7 dla osób korzystających z niezgodnych modułów. Aby uzyskać więcej informacji na temat tej funkcji, zobacz about_Windows_PowerShell_Compatibility.

z komunikacją zdalną programu PowerShell

Komunikacja zdalna programu PowerShell umożliwia uruchamianie dowolnego polecenia programu PowerShell na co najmniej jednym komputerze zdalnym. Możesz ustanowić trwałe połączenia, uruchomić sesje interaktywne i uruchamiać skrypty na komputerach zdalnych.

Komunikacja zdalna w usłudze WS-Management

Program Windows PowerShell 5.1 lub nowszy używają protokołu WS-Management (WSMAN) do negocjacji połączeń i transportu danych. Zdalne zarządzanie systemem Windows (WinRM) używa protokołu WSMAN. Jeśli usługa WinRM została włączona, program PowerShell 7 używa istniejącego punktu końcowego programu Windows PowerShell 5.1 o nazwie Microsoft.PowerShell dla połączeń komunikacji zdalnej. Aby zaktualizować program PowerShell 7 w celu uwzględnienia własnego punktu końcowego, uruchom Enable-PSRemoting polecenie cmdlet . Aby uzyskać informacje na temat nawiązywania połączenia z określonymi punktami końcowymi, zobacz Komunikacja zdalna WS-Management w programie PowerShell

Aby można było używać komunikacji zdalnej programu Windows PowerShell, należy skonfigurować komputer zdalny do zdalnego zarządzania. Aby uzyskać więcej informacji, w tym instrukcje, zobacz About Remote Requirements (Informacje o wymaganiach zdalnych).

Aby uzyskać więcej informacji na temat pracy z komunikacji zdalnej, zobacz About Remote (Informacje o zdalnym)

Komunikacja zdalna oparta na protokole SSH

Komunikacja zdalna oparta na protokole SSH została dodana w programie PowerShell 6.x w celu obsługi innych systemów operacyjnych, które nie mogą używać składników natywnych systemu Windows, takich jak WinRM. Komunikacja zdalna SSH tworzy proces hosta programu PowerShell na komputerze docelowym jako podsystem SSH. Aby uzyskać szczegółowe informacje i przykłady dotyczące konfigurowania komunikacji zdalnej opartej na protokole SSH w systemie Windows lub Linux, zobacz: Komunikacja zdalna programu PowerShell za pośrednictwem protokołu SSH.

Uwaga

Galeria programu PowerShell (PSGallery) zawiera moduł i polecenie cmdlet, które automatycznie konfiguruje komunikacja zdalną opartą na protokole SSH. Microsoft.PowerShell.RemotingTools Zainstaluj moduł z galerii PSGallery i uruchom Enable-SSH polecenie cmdlet .

Polecenia New-PSSessioncmdlet , Enter-PSSessioni Invoke-Command mają nowe zestawy parametrów do obsługi połączeń SSH.

[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]

Aby utworzyć sesję zdalną, określ komputer docelowy z parametrem HostName i podaj nazwę użytkownika userName. Podczas interakcyjnego uruchamiania poleceń cmdlet zostanie wyświetlony monit o podanie hasła.

Enter-PSSession -HostName <Computer> -UserName <Username>

Alternatywnie w przypadku korzystania z parametru HostName podaj informacje o nazwie użytkownika, a następnie znak (@), a następnie nazwę komputera.

Enter-PSSession -HostName <Username>@<Computer>

Uwierzytelnianie klucza SSH można skonfigurować przy użyciu pliku klucza prywatnego z parametrem KeyFilePath . Aby uzyskać więcej informacji, zobacz Zarządzanie kluczami OpenSSH.

Obsługiwane zasady grupy

Program PowerShell zawiera ustawienia zasad grupy, które ułatwiają definiowanie spójnych wartości opcji dla serwerów w środowisku przedsiębiorstwa. Do tych ustawień należą:

  • Konfiguracja sesji konsoli: ustawia punkt końcowy konfiguracji, w którym jest uruchamiany program PowerShell.
  • Włącz rejestrowanie modułów: ustawia właściwość LogPipelineExecutionDetails modułów.
  • Włącz rejestrowanie bloków skryptów programu PowerShell: umożliwia szczegółowe rejestrowanie wszystkich skryptów programu PowerShell.
  • Włącz wykonywanie skryptu: ustawia zasady wykonywania programu PowerShell.
  • Włącz transkrypcję programu PowerShell: umożliwia przechwytywanie danych wejściowych i wyjściowych poleceń programu PowerShell w transkrypcje oparte na tekście.
  • Ustaw domyślną ścieżkę źródłową dla polecenia Update-Help: ustawia źródło funkcji Updatable Help na katalog, a nie Internet.

Aby uzyskać więcej informacji, zobacz temat Informacje o ustawieniach zasad grupy.

Program PowerShell 7 zawiera szablony zasad grupy i skrypt instalacji w programie $PSHOME.

Narzędzia zasad grupy używają plików szablonów administracyjnych (.admx, .adml) do wypełniania ustawień zasad w interfejsie użytkownika. Dzięki temu administratorzy mogą zarządzać ustawieniami zasad opartymi na rejestrze. Skrypt InstallPSCorePolicyDefinitions.ps1 instaluje szablony programu PowerShell Administracja istracyjne na komputerze lokalnym.

Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
    Directory: C:\Program Files\PowerShell\7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/27/2020 12:38 AM          15861 InstallPSCorePolicyDefinitions.ps1
-a---           2/27/2020 12:28 AM           9675 PowerShellCoreExecutionPolicy.adml
-a---           2/27/2020 12:28 AM           6201 PowerShellCoreExecutionPolicy.admx

Oddzielne dzienniki zdarzeń

Zdarzenia programu Windows PowerShell i programu PowerShell 7 są rejestrowane w celu oddzielenia dzienników zdarzeń. Użyj następującego polecenia, aby uzyskać listę dzienników programu PowerShell.

Get-WinEvent -ListLog *PowerShell*

Aby uzyskać więcej informacji, zobacz about_Logging_Windows.

Ulepszone środowisko edytowania przy użyciu programu Visual Studio Code

Program Visual Studio Code (VSCode) z rozszerzeniem programu PowerShell jest obsługiwanym środowiskiem skryptowym dla programu PowerShell 7. Zintegrowane środowisko skryptów programu Windows PowerShell (ISE) obsługuje tylko program Windows PowerShell.

Zaktualizowane rozszerzenie programu PowerShell obejmuje:

  • Nowy tryb zgodności środowiska ISE
  • Funkcja PSReadLine w konsoli zintegrowanej, w tym wyróżnianie składni, edytowanie wielowierszowe i wyszukiwanie wsteczne
  • Ulepszenia stabilności i wydajności
  • Nowa integracja funkcji CodeLens
  • Ulepszone autouzupełnianie ścieżki

Aby ułatwić przejście do programu Visual Studio Code, użyj funkcji Włącz tryb ISE dostępnej w palecie poleceń. Ta funkcja przełącza program VSCode w układ w stylu ISE. Układ w stylu ISE zapewnia wszystkie nowe funkcje i możliwości programu PowerShell w znanym środowisku użytkownika.

Aby przełączyć się do nowego układu ISE, naciśnij klawisze Ctrl+Shift+P, aby otworzyć paletę poleceń, wpisz PowerShell i wybierz pozycję PowerShell: Włącz tryb ISE.

Aby ustawić układ na oryginalny układ, otwórz paletę poleceń, wybierz pozycję PowerShell: Wyłącz tryb ISE (przywróć domyślne).

Aby uzyskać szczegółowe informacje na temat dostosowywania układu programu VSCode do środowiska ISE, zobacz Jak replikować środowisko ISE w programie Visual Studio Code

Uwaga

Nie ma planów aktualizacji środowiska ISE przy użyciu nowych funkcji. W najnowszych wersjach systemu Windows 10 lub Windows Server 2019 i nowszych środowisko ISE jest teraz funkcją umożliwiającą odinstalowanie użytkownika. Nie ma planów trwałego usunięcia ise. Zespół programu PowerShell i jego partnerzy koncentrują się na ulepszaniu środowiska obsługi skryptów w rozszerzeniu programu PowerShell dla programu Visual Studio Code.

Następne kroki

Uzbrojony w wiedzę, aby skutecznie przeprowadzić migrację, zainstaluj teraz program PowerShell 7 !