PowerShell Profiles

W tym poradniku poznamy profile PowerShell i ich zastosowanie. Profile PowerShell pomagają dostosować środowisko i dodać elementy do każdej sesji PowerShell, którą rozpoczynamy. Profil PowerShell jest skryptem, który uruchamia się za każdym razem, gdy uruchamiamy PowerShell. Możesz użyć profilu PowerShell jako skryptu logowania, aby dostosować środowisko. Używając profilu PowerShell możemy dodać komendy, aliasy, funkcje, zmienne, snap-iny, moduły, PSDrivy i inne elementy specyficzne dla sesji w naszym środowisku. Nie będziesz musiał ich importować ani tworzyć na nowo przy każdym uruchomieniu PowerShella. Zostaną one załadowane automatycznie. PowerShell obsługuje kilka profili dla użytkowników i programów hostów. PowerShell nie tworzy żadnych profili za użytkownika.

Jeśli chcesz mieć specyficzne dla sesji polecenia, zmienne, zmienne preferencji, aliasy, funkcje, polecenia (z wyjątkiem Set-ExecutionPolicy) i moduły PowerShell, których często używasz, możesz użyć profili do załadowania we wszystkich przyszłych sesjach.

Pliki profili

Konsola PowerShell obsługuje następujące profile:

  • $Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 – Bieżący użytkownik, Bieżący host
  • $Home\Documents\PowerShell\Profile.ps1 – Bieżący użytkownik, Wszystkie hosty
  • $PsHome\Microsoft.PowerShell_profile.ps1 – Wszyscy użytkownicy, Bieżący host
  • $PsHome\Profile.ps1 – Wszyscy użytkownicy, Wszystkie hosty

Powyższe profile są przedstawione w kolejności pierwszeństwa. Pierwszy profil na liście ma najwyższy priorytet. Jak widać w powyższych profilach, mamy dwie zmienne. Zmienne $PSHome i $Home przedstawiają następujące wartości.

  • $PSHome – Przechowuje katalog instalacyjny dla PowerShell
  • $Home – Przechowuje katalog domowy bieżącego użytkownika

Inne programy, które hostują PowerShell, mogą obsługiwać własne profile. PowerShell Integrated Scripting Environment (ISE) obsługuje następujące profile specyficzne dla hosta.

  • $Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1 – Bieżący użytkownik, Bieżący host
  • $PsHome\Microsoft.PowerShellISE_profile.ps1 – Wszyscy użytkownicy, Bieżący host

Jak podaje Microsoft, w pomocy PowerShell, profil „Bieżący użytkownik, Bieżący host” jest profilem najczęściej określanym jako „twój profil PowerShell”.

Zmienna profilu

W PowerShell mamy automatyczną zmienną o nazwie $Profile. Wszystkie ścieżki profili PowerShell, które są dostępne w bieżącej sesji są przechowywane w zmiennej $Profile. Przeglądając zmienną $Profile, zobaczymy ścieżkę do profilu.

Zmienna $Profile przechowuje ścieżkę do profilu „Bieżący użytkownik, bieżący host”. Pozostałe profile są zapisane we właściwościach notatki zmiennej $Profile.

Można określić profil za pomocą właściwości zmiennej. W Windows PowerShell Console mamy następujące wartości w zmiennej $Profile.

  • $Profile – Bieżący użytkownik, bieżący host
  • $Profile.CurrentUserCurrentHost – Bieżący użytkownik, bieżący host
  • $Profile.CurrentUserAllHosts – Bieżący użytkownik, wszystkie hosty
  • $Profile.AllUsersCurrentHost – Wszyscy użytkownicy, bieżący host
  • $Profile.AllUsersAllHosts – Wszyscy użytkownicy, wszystkie hosty

Możesz użyć zmiennej $Profile w swoich poleceniach.

Kod:

Test-Path -Path $PROFILETest-Path -Path $PROFILE.CurrentUserCurrentHostTest-Path -Path $PROFILE.CurrentUserAllHostsTest-Path -Path $PROFILE.AllUsersCurrentHostTest-Path -Path $PROFILE.AllUsersAllHosts

Wyjście:

Powyższe polecenia testują, czy podany profil został utworzony. Jak widać odpowiedź na wszystkie z nich jest fałszywa. Jak już wcześniej wspomniałeś, profile nie są tworzone domyślnie. Musisz je utworzyć.

Utwórz profil

Aby utworzyć profil musisz użyć następującej komendy.

Code:

New-Item -ItemType File -Path $profile -Force

Powyższa komenda utworzy profil dla „Current User, Current Host”.

Zauważ, że powyższe polecenie zastąpi każdy istniejący profil. Jeśli chcesz się upewnić, że nie zastąpisz żadnego profilu, który już istnieje i nie utracisz zmian, które już zastosowałeś, możesz spróbować poniższego rozwiązania.

Code:

if (-not (Test-Path -Path $profile.AllUsersAllHosts)){ New-Item -ItemType File -Path $profile.AllUsersAllHosts -Force}

Powyższe polecenie sprawdzi, czy istnieje profil dla „All Users, All Hosts”, a jeśli nie istnieje, utworzy profil.

Aby utworzyć profil, musisz uruchomić konsolę PowerShell jako administrator. Ma to zastosowanie od Windows Vista i późniejszych wersji.

Edycja profilu

Jeśli profil istnieje i potrzebujesz zastosować pewne zmiany lub dodatki, musisz użyć edytora tekstu do edycji profilu. Użycie notatnika jest łatwym sposobem na edycję profilu.

Code:

notepad $profile

Jak widać poniżej, mój obecny profil jest skonfigurowany tak, aby dostarczał komunikat powitalny, gdy otwieram konsolę.

Teraz użyję powyższego polecenia, aby zastosować pewne zmiany w moim profilu.

Poniżej są zmiany, które zastosowałem.

Kiedy ponownie uruchomiłem konsolę PowerShell, jak widać zmiany zostały zastosowane.

Wskazówki dotyczące profili

Poniżej przedstawię kilka wskazówek dotyczących konfigurowania profili, dostarczonych przez Microsoft.

Jeśli używasz wielu aplikacji hosta, umieść elementy, których używasz we wszystkich aplikacjach hosta w swoim $Profile.CurrentUserAllHostsprofilu. Umieść elementy, które są specyficzne dla aplikacji hosta, takie jak polecenie, które ustawia kolor tła dla aplikacji hosta, w profilu, który jest specyficzny dla tej aplikacji hosta.

Jeśli jesteś administratorem, który dostosowuje PowerShell dla wielu użytkowników, postępuj zgodnie z tymi wskazówkami:

  • Przechowuj wspólne elementy w profilu $profile.AllUsersAllHosts
  • Przechowuj elementy, które są specyficzne dla aplikacji hosta w profilach $profile.AllUsersCurrentHost, które są specyficzne dla aplikacji hosta
  • Przechowuj elementy dla poszczególnych użytkowników w profilach specyficznych dla użytkownika

Pamiętaj, aby sprawdzić dokumentację aplikacji hosta pod kątem wszelkich specjalnych implementacji profili PowerShell.

Bez profilu

Nawet jeśli masz utworzone profile do załadowania za każdym razem, gdy otwierasz konsolę, możesz uruchomić PowerShell bez żadnego profilu do załadowania. Można to zrobić uruchamiając PowerShell z parametrem -NoProfile. Można to zrobić z cmd.exe, okna dialogowego Uruchom lub samego PowerShella.

Code:

PowerShell -NoProfile

Execution Policy

Polityka wykonania PowerShell określa, czy można uruchamiać skrypty i ładować pliki konfiguracyjne, w tym profile. Domyślnie ustawiona jest polityka wykonania „Restricted”. Więcej informacji o polityce wykonania PowerShell można znaleźć tutaj. Jeśli używasz polityki „Ograniczone”, uniemożliwia ona uruchamianie wszystkich skryptów, w tym profili. Zawartość profilu nie jest stosowana. Polecenie Set-ExecutionPolicy ustawia i zmienia politykę wykonania we wszystkich sesjach PowerShell, ponieważ wartość jest zapisywana w rejestrze. Nie trzeba jej ustawiać po otwarciu konsoli ani zapisywać polecenia Set-ExecutionPolicy w profilu.

Profile na sesji zdalnej

Profile PowerShell nie są uruchamiane automatycznie w sesjach zdalnych, więc polecenia dodawane przez profile nie są obecne w sesji zdalnej. Dodatkowo, zmienna automatyczna $Profile nie jest uzupełniana w sesjach zdalnych.

Jeśli chcemy uruchomić profil z naszego lokalnego komputera, do sesji zdalnej, musimy użyć cmdleta Invoke-Command.

Poniższy przykład uruchomi lokalny profil do zdalnej sesji.

Code:

$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -FilePath $profile

Output:

Jako że profil nie będzie wypełniony w zdalnej sesji, możemy również załadować zdalny profil do sesji. Sprawdź poniższy przykład.

Code:

$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -ScriptBlock {. "$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

Output:

Mam nadzieję, że tutorial dotyczący profili PowerShell jest pomocny.

Proszę dać mi znać o swoich komentarzach i przemyśleniach.

Doceniamy Twoje opinie.

Odnośne linki

  • Tutoriale PowerShell
  • Skrypty PowerShell
  • about_Profiles | Microsoft Docs
  • Zmienne automatyczne PowerShell
  • Operatory logiczne PowerShell
  • PowerShell Execution Policy
  • Test-…Ścieżka – Microsoft Docs
  • New-.Item – Microsoft Docs
  • Write-Output – Microsoft Docs
  • Set-ExecutionPolicy – Microsoft Docs
  • Invoke-Command – Microsoft Docs
Podsumowanie
Nazwa artykułu
PowerShell Profiles
Opis
PowerShell Profiles. W tym tutorialu znajdziesz informacje o profilach PowerShell i ich zastosowaniu. Blog Stephanos Constantinou
Autor
Stephanos
Nazwa wydawcy
Blog Stephanos Constantinou
Logo wydawcy

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.