about_Profiles

簡短描述

描述如何建立及使用PowerShell配置檔。

詳細描述

您可以建立 PowerShell 配置檔來自定義您的環境,並將會話特定元素新增至您啟動的每個 PowerShell 工作階段。

PowerShell 設定檔是在 PowerShell 啟動時執行的指令碼。 您可以使用設定檔作為啟動文稿來自定義您的環境。 您可以新增命令、別名、函式、變數、模組、PowerShell 磁碟驅動器等等。 您也可以將其他會話特定元素新增至您的配置檔,使其可在每個會話中使用,而不需要匯入或重新建立它們。

PowerShell 支援數個使用者和主機程式的配置檔。 不過,它不會為您建立配置檔。

配置檔類型和位置

PowerShell 支援數個範圍限定於使用者和 PowerShell 主機的配置檔。 您可以在電腦上擁有任何或全部的設定檔。

PowerShell 控制台支援下列基本配置檔。 這些檔案路徑是預設位置。

  • 所有使用者、所有主機
    • Windows - $PSHOME\Profile.ps1
    • Linux - /opt/microsoft/powershell/7/profile.ps1
    • macOS - /usr/local/microsoft/powershell/7/profile.ps1
  • 所有使用者、目前主機
    • Windows - $PSHOME\Microsoft.PowerShell_profile.ps1
    • Linux - /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
    • macOS - /usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
  • 目前使用者、所有主機
    • Windows - $HOME\Documents\PowerShell\Profile.ps1
    • Linux - ~/.config/powershell/profile.ps1
    • macOS - ~/.config/powershell/profile.ps1
  • 目前使用者、目前主機
    • Windows - $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux - ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    • macOS - ~/.config/powershell/Microsoft.PowerShell_profile.ps1

注意

在 Windows 中,資料夾重新 Documents 導向或 OneDrive 可以變更資料夾的位置。 我們不建議將資料夾重新 Documents 導向至網路共用,或將其包含在 OneDrive 中。 重新導向資料夾可能會導致模組無法載入並建立設定檔腳本中的錯誤。 如需從 OneDrive 管理移除 Documents 資料夾的相關信息,請參閱 OneDrive 檔

配置文件文稿會依照列出的順序執行。 這表示 AllUsersAllHosts 設定檔中所做的變更可由任何其他配置檔腳本覆寫。 CurrentUserCurrentHost 配置檔一律會持續執行。 在 PowerShell 說明中 ,CurrentUserCurrentHost 配置檔是最常稱為 PowerShell 配置檔的設定檔

裝載 PowerShell 的其他程式可以支援自己的配置檔。 例如,Visual Studio Code (VS Code) 支援下列主機特定配置檔。

  • 所有使用者、目前主機 - $PSHOME\Microsoft.VSCode_profile.ps1
  • 目前的使用者、目前的主機 - $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

設定檔案路徑包含下列變數:

  • 變數 $PSHOME 會儲存 PowerShell 的安裝目錄
  • 變數 $HOME 會儲存目前使用者的主目錄

$PROFILE變數

自動 $PROFILE 變數會儲存目前會話中可用的PowerShell配置檔路徑。

若要檢視配置檔路徑,請顯示變數的值 $PROFILE 。 您也可以在命令中使用 $PROFILE 變數來代表路徑。

變數 $PROFILE 會儲存「目前使用者、目前主機」配置檔的路徑。 其他配置檔會儲存在變數的 $PROFILE 附註屬性中。

例如,變數 $PROFILE 在 Windows PowerShell 控制台中具有下列值。

  • 目前的使用者、目前的主機 - $PROFILE
  • 目前的使用者、目前的主機 - $PROFILE.CurrentUserCurrentHost
  • 目前使用者、所有主機 - $PROFILE.CurrentUserAllHosts
  • 所有使用者、目前的主機 - $PROFILE.AllUsersCurrentHost
  • 所有使用者、所有主機 - $PROFILE.AllUsersAllHosts

因為每個使用者和每個主應用程式中變數 $PROFILE 的值都會變更,因此請確定您在您使用的每個 PowerShell 主應用程式中顯示設定檔變數的值。

若要查看變數的 $PROFILE 目前值,請輸入:

$PROFILE | Select-Object *

您可以在許多命令中使用 $PROFILE 變數。 例如,下列命令會在 記事本 中開啟 「Current User, Current Host」 設定檔:

notepad $PROFILE

下列命令會判斷是否已在本機電腦上建立「所有使用者、所有主機」配置檔:

Test-Path -Path $PROFILE.AllUsersAllHosts

如何建立配置檔

若要建立 PowerShell 設定檔,請使用下列命令格式:

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

例如,若要在目前的 PowerShell 主應用程式中建立目前使用者的設定檔,請使用下列命令:

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

在此命令中 if ,語句會防止您覆寫現有的配置檔。 將變數的值 $PROFILE 取代為您要建立之配置檔案的路徑。

注意

若要在 Windows Vista 和更新版本的 Windows 中建立「所有使用者」配置檔,請使用 [ 以系統管理員 身分執行] 選項啟動 PowerShell。

如何編輯配置檔

您可以在文字編輯器中開啟任何 PowerShell 配置檔,例如 記事本。

若要在 記事本 中開啟目前 PowerShell 主應用程式中目前使用者的設定檔,請輸入:

notepad $PROFILE

若要開啟其他設定檔,請指定設定檔名稱。 例如,若要開啟所有主應用程式的所有使用者的設定檔,請輸入:

notepad $PROFILE.AllUsersAllHosts

若要套用變更,請儲存配置檔案,然後重新啟動PowerShell。

如何選擇配置檔

如果您使用多個主應用程式,請將您在所有主應用程式中所使用的專案放入設定檔 $PROFILE.CurrentUserAllHosts 中。 將主應用程式特定的專案,例如設定主應用程式背景色彩的命令,放在該主應用程式專屬的配置檔中。

如果您是為許多使用者自定義 PowerShell 的系統管理員,請遵循下列指導方針:

  • 將一般專案儲存在配置檔中$PROFILE.AllUsersAllHosts
  • 將專屬於主應用程式的專案儲存在主應用程式專屬的配置檔中$PROFILE.AllUsersCurrentHost
  • 將特定使用者的專案儲存在使用者特定配置檔中

請務必檢查主機應用程式檔,以取得 PowerShell 配置檔的任何特殊實作。

如何使用配置檔

您在 PowerShell 中建立的許多專案,以及您執行的大部分命令只會影響目前的作業階段。 當您結束工作階段時,會刪除專案。

會話特定的命令和專案包括 PowerShell 變數、環境變數、別名、函式、命令和您新增至會話的 PowerShell 模組。

若要儲存這些專案,並在所有未來的會話中提供這些專案,請將這些專案新增至 PowerShell 配置檔。

配置檔的另一個常見用途是儲存常用函式、別名和變數。 當您將專案儲存在配置檔中時,可以在任何適用的會話中使用這些專案,而不需重新建立它們。

如何啟動配置檔

當您開啟配置檔案時,檔案會是空白的。 不過,您可以填入常使用的變數、別名和命令。

以下是協助您開始使用的一些建議。

新增可列出任何 Cmdlet 別名的函式

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

自訂您的主控台

function CustomizeConsole {
  $hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
CustomizeConsole

新增自定義的 PowerShell 提示字元

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

如需 PowerShell 提示字元的詳細資訊,請參閱 about_Prompts

如需其他配置檔範例,請參閱 自定義殼層環境

NoProfile 參數

若要在沒有配置文件的情況下啟動 PowerShell,請使用 pwsh.exeNoProfile 參數,啟動 PowerShell 的程式。

若要開始,請開啟可啟動PowerShell的程式,例如Cmd.exe或PowerShell本身。 您也可以在 Windows 中使用 [執行] 對話框。

輸入:

pwsh -NoProfile

如需 參數 pwsh.exe的完整清單,請輸入:

pwsh -?

配置檔和執行原則

PowerShell 執行原則會決定您是否可以執行腳本並載入組態檔,包括配置檔。 [ 受限制 的執行原則] 是預設值。 它可防止所有腳本執行,包括配置檔。 如果您使用「受限制」原則,則配置檔不會執行,而且不會套用其內容。

Set-ExecutionPolicy命令會設定並變更您的執行原則。 這是所有 PowerShell 工作階段中套用的幾個命令之一,因為值會儲存在登錄中。 您不需要在開啟主控台時設定它,而且不需要將命令儲存 Set-ExecutionPolicy 在設定檔中。

配置檔和遠端會話

PowerShell 設定檔不會在遠端工作階段中自動執行,因此設定檔新增的命令不存在於遠端工作階段中。 此外, $PROFILE 遠端會話中不會填入自動變數。

若要在會話中執行配置檔,請使用 Invoke-Command Cmdlet。

例如,下列命令會在的會話 $s中,從本機計算機執行「目前使用者、目前主機」配置檔。

Invoke-Command -Session $s -FilePath $PROFILE

下列命令會從會話中的 $s遠端電腦執行「目前使用者,目前主機」配置檔。 $PROFILE因為變數未填入,因此命令會使用配置檔的明確路徑。 我們使用點來源運算符,讓配置檔在遠端電腦上的目前範圍中執行,而不是在自己的範圍內執行。

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

執行此命令之後,配置檔新增至會話的命令可在 中使用 $s

另請參閱