Articles

Adam Automator

Czy jesteś gotowy do przeprowadzenia aktualizacji PowerShella do wersji 7 i uzyskania dostępu do wszystkich nowych funkcji? Jeśli tak, ten artykuł jest dla Ciebie.

Kiedy PowerShell 6 został wydany, miał on na celu wprowadzenie podstawowej wersji PowerShell na wszystkie platformy (PowerShell Core). Wraz z PowerShell 7 (który jest najnowszą wersją PowerShell w chwili pisania tego artykułu), teraz chcemy aby wszystkie platformy były równe w PowerShell, który mogą dostarczyć (zarówno Windows PowerShell jak i PowerShell Core).

W tym artykule dowiesz się jak wykonać aktualizację PowerShell 7 ręcznie i jak zautomatyzować proces aktualizacji przy użyciu masowych wdrożeń poprzez GPO i PowerShell Remoting.

W czasie pisania tego artykułu, aktualnym wydaniem PowerShell 7 jest Preview 3. Większość odniesień w tym artykule będzie dotyczyła tej wersji.

Table of Contents

Jak zaktualizować wersję PowerShella na maszynie

Podobnie jak w przypadku PowerShell Core 6.0, proces instalacji PowerShell Core 7 jest podobny. Przyjrzyjmy się kilku różnym sposobom instalacji PowerShella 7 na pojedynczej maszynie.

Zanim zajdziemy za daleko, warto wspomnieć o kilku wymaganiach wstępnych przed instalacją PowerShella w wersji 7. Zauważysz, że są to te same wymagania, co dla PowerShella w wersji 6.

  • Musi być zainstalowany Universal C Runtime
  • Windows Management Framework (WMF) 4.0 lub nowszy – tylko jeśli używasz wersji Windows 7 lub Windows Server 2008R2. Późniejsze wersje Windows jak Windows 8.1, Windows 10 i Windows Server 2016, WMF nie jest wymagany.

Instalowanie PowerShell 7 ręcznie

Na początku należy pobrać PowerShell 7. Aby to zrobić, przejdź do strony GitHub Releases dla PowerShell i znajdź wersję, którą chcesz zainstalować. W tym artykule używamy wydania PowerShell 7.0.0 preview 3. W systemie Windows przewiń trochę w dół i pobierz PowerShell-7.0.0.0-preview.3-win-x86.msi MSI i uruchom go.

Ekran powitalny instalacji PowerShella 7
Ekran powitalny instalacji PowerShella 7

Kreator zada kilka prostych pytań, np. gdzie ma być zainstalowany PowerShell. Jeśli chcesz uruchomić wiele wersji PowerShell obok siebie, pamiętaj, aby użyć oddzielnych folderów instalacyjnych.

Kreator zapyta również, czy chcesz zarejestrować PowerShell do zmiennej środowiskowej PATH. Dodanie folderu instalacji PowerShell do zmiennej środowiskowej PATH pozwala na wywołanie PowerShell z dowolnego innego terminala, takiego jak inna wersja PowerShell lub nawet cmd.exe.

Inną opcją jest Register PowerShell to the Windows Event Logging Manifest. Kiedy ta opcja jest włączona, wykorzystuje ona możliwości logowania, które są dostarczane z tą wersją PowerShella.

Następnie zostaniesz zapytany, czy chcesz włączyć PowerShell Remoting od samego początku, co może pomóc we wszystkich zdalnych zadaniach.

Na koniec zostaniesz zapytany, czy chcesz dodać menu kontekstowe 'Otwórz tutaj' do Eksploratora. Opcja ta umożliwia kliknięcie prawym przyciskiem myszy na dowolnym folderze podczas przeglądania w Eksploratorze Windows i otwarcie okna PowerShella w danym katalogu roboczym.

Pomimo, że ostatnie dwa są całkowicie opcjonalne i zależą od Ciebie, bardzo polecam włączenie dwóch pierwszych, w ten sposób:

Wybór domyślnych ustawień w PowerShell 7 install
Wybór domyślnych ustawień w PowerShell 7 install

Gdy już odpowiesz na wszystkie pytania, kliknij Next i rozpocznie się instalacja.

Otwarcie PowerShell 7

Po zainstalowaniu możesz uruchomić PowerShell 7, otwierając dowolny terminal wiersza poleceń i wpisując pwsh-preview.

Zauważ, że nie użyjesz tej nazwy polecenia, gdy wersja 7 PowerShell wyjdzie z fazy „preview”. Po wyjściu z fazy „preview”, będziesz mógł uruchomić PowerShell 7 za pomocą pwsh.

Instalowanie PowerShella 7 za pomocą PowerShella

Lider zespołu Microsoft PowerShell, Steve Lee, opublikował na Twitterze poręczny sposób na zainstalowanie PowerShella 7 za pomocą cmdletu PowerShella Invoke-RestMethod. Ten wycinek kodu wykorzystuje polecenie, aby zapytać repozytorium PowerShell GitHub, pobrać skrypt instalacyjny, który następnie pobiera i instaluje PowerShell 7 za pomocą jednej linii.

Poniżej znajdziesz składnię, aby to zrobić. Otwórz konsolę Windows PowerShell i uruchom poniższy one-liner.

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"

Ten snippet kodu używa PowerShell Invoke-Expression cmdlet (iex w one-linerze), aby przyjąć ciąg znaków i uruchomić go jako kod PowerShell. Ten ciąg wywołuje Invoke-RestMethod cmdlet (irm w one-linerze), aby pobrać skrypt, który Steve napisał. Gorąco polecam skorzystanie z linku i sprawdzenie kodu przed uruchomieniem tego polecenia!

Skrypt następnie przekazuje parametry UseMSI i Preview do skryptu, aby pobrać i zainstalować najnowsze MSI.

Jeśli chciałbyś uruchomić ten skrypt całkowicie bezgłośnie i bez nadzoru, możesz użyć parametru Quiet. W czasie pisania tego tekstu, parametr Preview nadal wskazuje na PowerShell 7 Preview 3.

Instalowanie PowerShell 7 za pomocą modułu

Innym sposobem na zainstalowanie PowerShell 7 jest użycie modułu PowerShell Jeffa Hicksa o nazwie PSReleaseTools. Moduł ten, podobnie jak one-liner Steve’a, pomaga utrzymać aktualną wersję PowerShella.

Dzięki dwóm liniom PowerShella, możesz pobrać moduł za pomocą Install-Module i używając Install-PSPreview polecenia, które jest dołączone do modułu PSRelaseTools, możesz zainstalować podgląd PowerShella 7.

PS51> Install-Module -name PSReleaseTools -ForcePS51> Install-PSPreview -mode Quiet

Wdrażanie PowerShell 7 w organizacji

Jest kilka opcji, jeśli chodzi o wdrażanie PowerShell 7 na skalę. Przyjrzyjmy się dwóm popularnym sposobom, aby to osiągnąć.

Wdrażanie PowerShell 7 za pomocą GPO

PowerShell jest łatwy do wdrożenia za pomocą GPO, ponieważ łatwo łączy się z innymi technologiami Microsoftu, gdy jest spakowany jako MSI. Kiedy wdrażasz go za pomocą GPO, jest kilka rzeczy, których musisz być świadomy.

Użyj GPO opartego na komputerze

Po pierwsze upewnij się, że używasz polityki opartej na komputerze, a nie na użytkowniku. Więcej na temat różnic pomiędzy tymi dwoma politykami można przeczytać tutaj. Na serwerach użytkownicy nie logują się w sposób interaktywny, co powoduje rozpoczęcie wdrażania.

Jeśli wdrażasz PowerShell 7 na wielu serwerach, chcesz, aby wdrażanie odbywało się niezależnie od interakcji użytkownika z maszyną.

Ustaw współdzielenie plików w sieci

Upewnij się także, że udział sieciowy, na którym umieściłeś MSI PowerShell 7, ma odpowiednio ustawione uprawnienia, aby wszystkie serwery w twoim środowisku miały do niego dostęp. Chociaż wykracza to poza zakres tego artykułu, możesz znaleźć więcej na temat tworzenia udziałów plików tutaj.

Utwórz GPO

Potem utworzysz swoje GPO wykonując następujące kroki:

  • Umieść MSI w przypisanym udziale pliku, do którego mają dostęp twoje komputery.
  • Utwórz GPO w Konsoli zarządzania zasadami grupy. Możesz przeczytać więcej o GPO tutaj
  • Po utworzeniu GPO, otwórz je i przejdź do Computer Configuration -> Software Settings.
  • Kliknij prawym przyciskiem myszy Software Installation, a następnie wybierz New -> Package.
  • W oknie dialogowym dodaj pełną ścieżkę UNC do MSI. Na przykład, jeśli udział w pliku o nazwie folder znajduje się na serwerze.nazwaf, ścieżka byłaby następująca: \serwer.nazwafolder\powershell-7.msi
  • Kliknij Otwórz -> Przypisano -> OK.

Dołącz GPO do wymaganych OU

Po utworzeniu dołącz GPO do wymaganych OU.

Sprawdź postęp instalacji GPO

Jeśli wolisz bardziej praktyczne podejście do sprawdzania wdrożenia Group Policy, sprawdź ten krótki skrypt, który utworzy raport z obiektami Group Policy zastosowanymi do komputerów w określonym OU.

Pamiętajmy, aby zmienić nazwę wyróżnioną OU (OU=Domain Controllers,DC=mylab,DC=local) na nazwę naszego OU.

Uwaga: skrypt można uruchomić na kontrolerze domeny lub komputerze podłączonym do domeny z zainstalowanym modułem PowerShell ActiveDirectory.

$computers = Get-ADComputer -Filter * -SearchBase 'OU=Domain Controllers, DC=mylab, DC=local'ForEach ($computer in $computers) { Get-GPResultantSetOfPolicy -Computer $computer -ReportType HTML -Path c:\temp\$computer.html}

Jeśli chciałbyś punktowo sprawdzić konkretne serwery, przyda Ci się poniższe polecenie. Sięga ono do zdalnego komputera ($computer) i sprawdza wersję PowerShella zainstalowaną na tym komputerze za pomocą $PSVersionTable.PSVersion.

PS> Invoke-Command -Computername $computer -Scriptblock {$PSVersionTable.psversion}

Na koniec, jeśli znajdziesz jakieś komputery, które nie mają zastosowanej polityki grupy, możesz uruchomić następujące polecenie, które wymusi odświeżenie polityki grupy na komputerze docelowym:

PS> Invoke-GPUpdate -Computer $computer

Wdrażanie PowerShell 7 za pomocą PowerShell Remoting

Kolejnym świetnym sposobem na wdrożenie PowerShell na zdalne maszyny jest PowerShell! Chociaż może się to wydawać trochę meta, PowerShell jest wystarczająco solidnym językiem skryptowym, aby pomóc w instalacji jego zamiennika.

Zanim zaczniesz, upewnij się, że remoting PowerShell jest włączony i że masz ustawione odpowiednie uprawnienia do wykonywania zdalnych poleceń w całym środowisku. Poradnik jak włączyć PSRemoting poprzez GPO można znaleźć tutaj.

Ponieważ wiesz już o one-linerze instalującym PowerShell, będziesz musiał „zawinąć” to polecenie w scriptblock i powiedzieć poleceniu Invoke-Command aby wykonało je na jednej lub więcej zdalnych maszynach.

Poniżej znajduje się przykład zapętlenia listy komputerów przechowywanej w tablicy $computers, a następnie uruchomienia skryptu install-powershell.ps1 na wszystkich z nich.

$creds = $(Get-Credential)ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview -Quiet"}}

Podsumowanie

Istnieje tak wiele powodów, aby utrzymywać aktualną wersję PowerShella, przynajmniej na własnej maszynie, jeśli nie w środowisku produkcyjnym. Będziesz mógł używać najnowszych funkcji, korzystać z ulepszeń wydajności, a nawet upewnić się, że Twój starszy kod nie będzie się psuł na nowszych wersjach.

Jak widzisz, istnieje wiele sposobów na pobranie i zainstalowanie nowych wersji PowerShella. Wybierz metodę, która działa dla Ciebie w Twoim środowisku i kontynuuj PowerShellin'!

Dalsza lektura

  • Jak sprawdzić wersję PowerShella (wszystkie sposoby!)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *