關於設定檔
簡短描述
說明如何建立及使用 PowerShell 設定檔。
完整描述
您可以建立 PowerShell 設定檔來自訂您的環境,並將工作階段特定項目新增至您啟動的每一個 PowerShell 工作階段。
PowerShell 設定檔是在 PowerShell 啟動時執行的指令碼。 您可以使用設定檔作為登入腳本,以自訂環境。 您可以新增命令、別名、函式、變數、嵌入式管理單元、模組和 PowerShell 磁片磁碟機。 您也可以將其他會話特定元素新增至您的設定檔,以便在每個會話中都可以使用它們,而不需要匯入或重新建立它們。
PowerShell 支援使用者和主機程式的數個設定檔。 不過,它不會為您建立設定檔。 本主題將說明這些設定檔,並說明如何在您的電腦上建立和維護設定檔。
它說明如何使用 PowerShell 主控台(PowerShell)的NoProfile參數來啟動 powershell,而不需要任何設定檔。 而且,它會說明 PowerShell 執行原則對設定檔的影響。
設定檔
PowerShell 支援數個設定檔。 此外,PowerShell 主機程式也可以支援自己的主機特定設定檔。
例如,PowerShell 主控台支援下列基本設定檔。 設定檔會依照優先順序列出。 第一個設定檔的優先順序最高。
描述 | 路徑 |
---|---|
所有使用者、所有主機 | $PSHOME \ 設定檔 ps1 |
所有使用者、目前的主機 | $PSHOME \ Microsoft. PowerShell_profile. ps1 |
目前的使用者,所有主機 | $Home \ [My] Documents \ WindowsPowerShell \ Profile. ps1 |
目前的使用者,目前的主控制項 | $Home \ [My] Documents \ WindowsPowerShell\ PowerShell_profile. ps1 |
設定檔路徑包含下列變數:
$PSHOME
變數,用來儲存 PowerShell 的安裝目錄$Home
變數,用來儲存目前使用者的主目錄
此外,裝載 PowerShell 的其他程式也可以支援自己的設定檔。 例如,PowerShell 整合式腳本環境(ISE)支援下列主機特有的設定檔。
描述 | 路徑 |
---|---|
所有使用者、目前的主機 | $PSHOME \ Microsoft. PowerShellISE_profile. ps1 |
目前的使用者,目前的主控制項 | $Home \ [My] Documents \ WindowsPowerShell\ PowerShellISE_profile. ps1 |
在 PowerShell 說明中,"CurrentUser,Current Host" 設定檔是最常稱為「您的 PowerShell 設定檔」的設定檔。
$PROFILE 變數
$PROFILE
自動變數會儲存目前會話中可用的 PowerShell 設定檔的路徑。
若要查看設定檔路徑,請顯示變數的值 $PROFILE
。 您也可以 $PROFILE
在命令中使用變數來代表路徑。
$PROFILE
變數會儲存「目前使用者、目前主機」設定檔的路徑。 其他設定檔會儲存在變數的附注屬性中 $PROFILE
。
例如,在 $PROFILE
Windows PowerShell 主控台中,變數具有下列值。
描述 | 名稱 |
---|---|
目前的使用者,目前的主控制項 | $PROFILE |
目前的使用者,目前的主控制項 | $PROFILE.CurrentUserCurrentHost |
目前的使用者,所有主機 | $PROFILE.CurrentUserAllHosts |
所有使用者、目前的主機 | $PROFILE.AllUsersCurrentHost |
所有使用者、所有主機 | $PROFILE.AllUsersAllHosts |
由於變數的值 $PROFILE
會針對每個使用者和每個主應用程式中的變更,因此請務必在您使用的每個 PowerShell 主應用程式中顯示設定檔變數的值。
若要查看變數目前的值 $PROFILE
,請輸入:
$PROFILE | Get-Member -Type NoteProperty
您可以 $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 語句會讓您無法覆寫現有的設定檔。 將設定檔路徑預留位置的值取代為 < > 您想要建立之設定檔的路徑。
注意
若要在 Windows Vista 和更新版本的 Windows 中建立「所有使用者」設定檔,請使用 [以系統管理員身分執行] 選項來啟動 PowerShell。
如何編輯設定檔
您可以在文字編輯器(如 [記事本])中開啟任何 PowerShell 設定檔。
若要在 [記事本] 的目前 PowerShell 主應用程式中開啟目前使用者的設定檔,請輸入:
notepad $PROFILE
若要開啟其他設定檔,請指定設定檔名稱。 例如,若要開啟所有主機應用程式之所有使用者的設定檔,請輸入:
notepad $PROFILE.AllUsersAllHosts
若要套用變更,請儲存設定檔,然後重新開機 PowerShell。
如何選擇設定檔
如果您使用多個主應用程式,請將您在所有主機應用程式中使用的專案放入 $PROFILE.CurrentUserAllHosts
設定檔中。 將主機應用程式特定的專案(例如設定主應用程式背景色彩的命令)放在特定于該主應用程式的設定檔中。
如果您是為許多使用者自訂 PowerShell 的系統管理員,請遵循下列指導方針:
- 將通用專案儲存在
$PROFILE.AllUsersAllHosts
設定檔中 - 將主機應用程式特定的專案儲存在
$PROFILE.AllUsersCurrentHost
主應用程式特定的設定檔中 - 在使用者特定的設定檔中儲存特定使用者的專案
請務必查看主機應用程式檔,以瞭解是否有任何特殊的 PowerShell 設定檔執行。
如何使用設定檔
您在 PowerShell 中建立的許多專案,以及您執行的大部分命令只會影響目前的會話。 當您結束會話時,就會刪除專案。
會話特定的命令和專案包括變數、喜好設定變數、別名、函式、命令( ExecutionPolicy除外),以及您新增至會話的 PowerShell 模組。
若要儲存這些專案,並將它們提供給所有未來的會話使用,請將它們新增至 PowerShell 設定檔。
設定檔的另一個常見用途是儲存經常使用的函式、別名和變數。 當您將專案儲存在設定檔中時,您可以在任何適用的會話中使用它們,而不需要重新建立。
如何啟動設定檔
當您開啟設定檔時,它會是空白的。 不過,您可以使用常用的變數、別名和命令來填入它。
以下是協助您開始使用的一些建議。
新增可讓您輕鬆開啟設定檔的命令
如果您使用的設定檔不是「目前的使用者、目前的主機」設定檔,這會特別有用。 例如,新增下列命令:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
新增可列出任何 Cmdlet 之別名的函式
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
自訂您的主控台
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
新增自訂的 PowerShell 提示字元
function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
如需 PowerShell 提示的詳細資訊,請參閱about_Prompts。
NoProfile 參數
若要啟動沒有設定檔的 PowerShell,請使用powershell的NoProfile參數,也就是啟動 powershell 的程式。
若要開始,請開啟可啟動 PowerShell 的程式,例如 Cmd.exe 或 PowerShell 本身。 您也可以使用 Windows 中的 [執行] 對話方塊。
輸入:
PowerShell -NoProfile
如需完整的 PowerShell 參數清單,請輸入:
PowerShell -?
設定檔和執行原則
PowerShell 執行原則會決定您是否可以執行腳本並載入設定檔(包括設定檔)。 受限制的執行原則是預設值。 它會防止所有腳本執行,包括設定檔。 如果您使用「限制」原則,設定檔不會執行,而且不會套用其內容。
Set-ExecutionPolicy
命令會設定並變更您的執行原則。 這是套用在所有 PowerShell 會話中的幾個命令之一,因為該值會儲存在登錄中。 您不需要在開啟主控台時設定它,也不需要 Set-ExecutionPolicy
在設定檔中儲存命令。
設定檔和遠端會話
PowerShell 設定檔不會自動在遠端會話中執行,因此設定檔新增的命令不會出現在遠端會話中。 此外, $PROFILE
自動變數不會在遠端會話中填入。
若要在會話中執行設定檔,請使用Invoke 命令Cmdlet。
例如,下列命令會從中會話的本機電腦執行「目前使用者,目前的主機」設定檔 $s
。
Invoke-Command -Session $s -FilePath $PROFILE
下列命令會從中會話的遠端電腦執行「目前使用者,目前的主機」設定檔 $s
。 因為 $PROFILE
未填入變數,所以命令會使用設定檔的明確路徑。 我們使用的是點出運算子,讓設定檔在遠端電腦上的目前範圍中執行,而不是在它自己的範圍中。
Invoke-Command -Session $s -ScriptBlock {
. "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}
執行此命令之後,您可以在中找到設定檔新增至會話的命令 $s
。