共用方式為


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 中,資料夾重新導向或 OneDrive 可以變更資料夾的位置 Documents 。 不建議將資料夾重新 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 會儲存目前使用者的主目錄

注意

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

$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 變數。 例如,下列命令會在 [記事本] 中開啟「目前使用者」、「目前主機」配置檔:

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中的本機計算機執行 「Current user, Current Host」 設定檔。

Invoke-Command -Session $s -FilePath $PROFILE

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

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

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

另請參閱