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.CurrentUserAllHosts
profilu. 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
.