about_Profiles

Krótki opis

Opisuje sposób tworzenia i używania profilu programu PowerShell.

Długi opis

Możesz utworzyć profil programu PowerShell, aby dostosować środowisko i dodać elementy specyficzne dla sesji do każdej sesji programu PowerShell, która zostanie uruchamiana.

Profil programu PowerShell to skrypt uruchamiany podczas uruchamiania programu PowerShell. Możesz użyć profilu jako skryptu logowania, aby dostosować środowisko. Można dodawać polecenia, aliasy, funkcje, zmienne, przystawki, moduły i dyski programu PowerShell. Możesz również dodać do profilu inne elementy specyficzne dla sesji, aby były dostępne w każdej sesji bez konieczności importowania lub ponownego tworzenia.

Program PowerShell obsługuje kilka profilów dla użytkowników i programów hostów. Nie tworzy jednak profilów. W tym temacie opisano profile oraz sposób tworzenia i obsługi profilów na komputerze.

Wyjaśniono w nim, jak używać parametru NoProfile konsoli programu PowerShell (PowerShell.exe) do uruchamiania programu PowerShell bez żadnych profilów. Wyjaśniono w nim wpływ zasad wykonywania programu PowerShell na profile.

Pliki profilu

Program PowerShell obsługuje kilka plików profilu. Ponadto programy hosta programu PowerShell mogą obsługiwać własne profile specyficzne dla hosta.

Na przykład konsola programu PowerShell obsługuje następujące pliki profilu podstawowego. Profile są wymienione w kolejności pierwszeństwa. Pierwszy profil ma najwyższy priorytet.

Opis Ścieżka
Wszyscy użytkownicy, wszystkie hosty Windows — $PSHOME\Profile.ps1
Linux — /usr/local/microsoft/powershell/7/profile.ps1
macOS — /usr/local/microsoft/powershell/7/profile.ps1
Wszyscy użytkownicy, bieżący host Windows — $PSHOME\Microsoft.PowerShell_profile.ps1
Linux — /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
macOS — /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
Bieżący użytkownik, wszystkie hosty Windows — $Home\[Moje ]DokumentyPowerShell\\Profile.ps1
Linux — ~/.config/powershell/profile.ps1
macOS — ~/.config/powershell/profile.ps1
Bieżący użytkownik, bieżący host Windows — $Home\[Moje ]DokumentyPowerShell\\Microsoft.PowerShell_profile.ps1
Linux — ~/.config/powershell/Microsoft.Powershell_profile.ps1
macOS — ~/.config/powershell/Microsoft.Powershell_profile.ps1

Ścieżki profilu obejmują następujące zmienne:

  • Zmienna $PSHOME , która przechowuje katalog instalacyjny programu PowerShell
  • Zmienna $Home , która przechowuje katalog macierzysty bieżącego użytkownika

Ponadto inne programy, które hostują program PowerShell, mogą obsługiwać własne profile. Na przykład Visual Studio Code obsługuje następujące profile specyficzne dla hosta.

Opis Ścieżka
Wszyscy użytkownicy, bieżący host \ $PSHOMEMicrosoft.VSCode_profile.ps1
Bieżący użytkownik, bieżący host \$Home[Moje ]DokumentyPowerShell\\
Microsoft.VSCode_profile.ps1

W Pomocy programu PowerShell profil "CurrentUser, bieżący host" jest najczęściej określany jako "Twój profil programu PowerShell".

Uwaga

W Windows lokalizacji folderu Dokumenty można zmienić przez przekierowanie folderu lub OneDrive. Nie zalecamy przekierowywania folderu Documents do udziału sieciowego ani do niego OneDrive. Przekierowywanie folderu może spowodować niepowodzenie skryptów profilu i załadowanie modułów.

Zmienna $PROFILE zmienna

Zmienna $PROFILE automatyczna przechowuje ścieżki do profilów programu PowerShell, które są dostępne w bieżącej sesji.

Aby wyświetlić ścieżkę profilu, wyświetl wartość zmiennej $PROFILE . Można również użyć zmiennej $PROFILE w poleceniu, aby reprezentować ścieżkę.

Zmienna $PROFILE przechowuje ścieżkę do profilu "Bieżący użytkownik, bieżący host". Inne profile są zapisywane we właściwościach notatki $PROFILE zmiennej.

Na przykład zmienna $PROFILE ma następujące wartości w Windows PowerShell konsoli.

Opis Nazwa
Bieżący użytkownik, bieżący host $PROFILE
Bieżący użytkownik, bieżący host $PROFILE.CurrentUserCurrentHost
Bieżący użytkownik, wszystkie hosty $PROFILE.CurrentUserAllHosts
Wszyscy użytkownicy, bieżący host $PROFILE.AllUsersCurrentHost
Wszyscy użytkownicy, wszystkie hosty $PROFILE.AllUsersAllHosts

Ponieważ wartości zmiennej zmieniają $PROFILE się dla każdego użytkownika i w każdej aplikacji hosta, upewnij się, że wartości zmiennych profilu są wyświetlane w każdej aplikacji hosta programu PowerShell, która jest użyciu.

Aby wyświetlić bieżące wartości zmiennej $PROFILE , wpisz:

$PROFILE | Get-Member -Type NoteProperty

Zmiennej można używać $PROFILE w wielu poleceniach. Na przykład następujące polecenie otwiera profil "Bieżący użytkownik, bieżący host" w Notatnik:

notepad $PROFILE

Następujące polecenie określa, czy profil "Wszyscy użytkownicy, wszystkie hosty" został utworzony na komputerze lokalnym:

Test-Path -Path $PROFILE.AllUsersAllHosts

Jak utworzyć profil

Aby utworzyć profil programu PowerShell, użyj następującego formatu polecenia:

if (!(Test-Path -Path <profile-name>)) {
  New-Item -ItemType File -Path <profile-name> -Force
}

Aby na przykład utworzyć profil dla bieżącego użytkownika w bieżącej aplikacji hosta programu PowerShell, użyj następującego polecenia:

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

W tym poleceniu If instrukcja uniemożliwia nadpisanie istniejącego profilu. Zastąp wartość symbolu zastępczego <profile-path> ścieżką do pliku profilu, który chcesz utworzyć.

Uwaga

Aby utworzyć profile "Wszyscy użytkownicy" w Windows Vista i nowszych wersjach programu Windows, uruchom program PowerShell z opcją Uruchom jako administrator.

Jak edytować profil

W edytorze tekstów można otworzyć dowolny profil programu PowerShell, na przykład Notatnik.

Aby otworzyć profil bieżącego użytkownika w bieżącej aplikacji hosta programu PowerShell w Notatnik, wpisz:

notepad $PROFILE

Aby otworzyć inne profile, określ nazwę profilu. Aby na przykład otworzyć profil dla wszystkich użytkowników wszystkich aplikacji hosta, wpisz:

notepad $PROFILE.AllUsersAllHosts

Aby zastosować zmiany, zapisz plik profilu, a następnie uruchom ponownie program PowerShell.

Jak wybrać profil

Jeśli używasz wielu aplikacji hosta, umieść elementy, których używasz we wszystkich aplikacjach hosta, w swoim $PROFILE.CurrentUserAllHosts profilu. Umieść elementy specyficzne dla aplikacji hosta, takie jak polecenie, które ustawia kolor tła dla aplikacji hosta, w profilu specyficznym dla tej aplikacji hosta.

Jeśli jesteś administratorem, który dostosowywanie programu PowerShell dla wielu użytkowników, postępuj zgodnie z tymi wytycznymi:

  • Przechowywanie wspólnych elementów w $PROFILE.AllUsersAllHosts profilu
  • Przechowywanie elementów specyficznych dla aplikacji hosta w profilach $PROFILE.AllUsersCurrentHost specyficznych dla aplikacji hosta
  • Przechowywanie elementów dla konkretnych użytkowników w profilach specyficznych dla użytkownika

Zapoznaj się z dokumentacją aplikacji hosta, aby uzyskać informacje o dowolnej specjalnej implementacji profilów programu PowerShell.

Jak używać profilu

Wiele elementów, które tworzysz w programie PowerShell, i większość uruchamianych poleceń ma wpływ tylko na bieżącą sesję. Po zakończeniu sesji elementy zostaną usunięte.

Polecenia i elementy specyficzne dla sesji obejmują zmienne, zmienne preferencji, aliasy, funkcje, polecenia (z wyjątkiem Set-ExecutionPolicy) i moduły programu PowerShell, które dodaje się do sesji.

Aby zapisać te elementy i udostępnić je we wszystkich przyszłych sesjach, dodaj je do profilu programu PowerShell.

Innym często używanym zastosowaniem profilów jest zapisywanie często używanych funkcji, aliasów i zmiennych. Po zapisaniu elementów w profilu można ich używać w dowolnej stosownej sesji bez ich ponownego tworzenia.

Jak uruchomić profil

Po otwarciu pliku profilu jest on pusty. Można go jednak wypełnić zmiennymi, aliasami i często używanymi poleceniami.

Oto kilka sugestii, które mogą rozpocząć pracę.

Dodawanie poleceń, które ułatwiają otwieranie profilu

Jest to szczególnie przydatne, jeśli używasz profilu innego niż profil "Bieżący użytkownik, bieżący host". Na przykład dodaj następujące polecenie:

function Pro {notepad $PROFILE.CurrentUserAllHosts}

Dodawanie funkcji, która wyświetla aliasy dla dowolnego polecenia cmdlet

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

Dostosowywanie konsoli

function Color-Console {
  $Host.ui.rawui.backgroundcolor = "white"
  $Host.ui.rawui.foregroundcolor = "black"
  $hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
Color-Console

Dodawanie dostosowanego wiersza polecenia programu PowerShell

function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

Aby uzyskać więcej informacji na temat wiersza polecenia programu PowerShell, zobacz about_Prompts.

Parametr NoProfile

Aby uruchomić program PowerShell bez profilów, użyj parametru NoProfile programu PowerShell.exe programu , który uruchamia program PowerShell.

Aby rozpocząć, otwórz program, który może uruchomić program PowerShell, taki jak Cmd.exe lub sam program PowerShell. Możesz również użyć okna dialogowego Uruchom w Windows.

Wpisz:

PowerShell -NoProfile

Aby uzyskać pełną listę parametrów PowerShell.exe, wpisz:

PowerShell -?

Profile i zasady wykonywania

Zasady wykonywania programu PowerShell częściowo określają, czy można uruchamiać skrypty i ładować pliki konfiguracji, w tym profile. Zasady wykonywania z ograniczeniami są domyślne. Zapobiega to uruchamianiu wszystkich skryptów, w tym profilów. Jeśli używasz zasad "Ograniczone", profil nie zostanie uruchomiony i jego zawartość nie zostanie zastosowana.

Polecenie Set-ExecutionPolicy ustawia i zmienia zasady wykonywania. Jest to jedno z kilku poleceń, które mają zastosowanie we wszystkich sesjach programu PowerShell, ponieważ wartość jest zapisywana w rejestrze. Nie trzeba go ustawiać po otwarciu konsoli i Set-ExecutionPolicy nie trzeba przechowywać polecenia w profilu.

Profile i sesje zdalne

Profile programu PowerShell nie są uruchamiane automatycznie w sesjach zdalnych, dlatego polecenia, które dodają profile, nie są obecne w sesji zdalnej. Ponadto automatyczna zmienna $PROFILE nie jest wypełniana w sesjach zdalnych.

Aby uruchomić profil w sesji, użyj polecenia cmdlet Invoke-Command .

Na przykład następujące polecenie uruchamia profil "Bieżący użytkownik, bieżący host" z komputera lokalnego w sesji w programie $s.

Invoke-Command -Session $s -FilePath $PROFILE

Następujące polecenie uruchamia profil "Bieżący użytkownik, bieżący host" z komputera zdalnego w sesji w programie $s. Ponieważ zmienna $PROFILE nie jest wypełniona, polecenie używa jawnej ścieżki do profilu. Używamy operatora pozyskiwania kropki, aby profil był wykonywany w bieżącym zakresie na komputerze zdalnym, a nie we własnym zakresie.

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Po uruchomieniu tego polecenia polecenia, które profil dodaje do sesji, są dostępne w .$s

Zobacz też