主題
    about_Profiles

簡短描述
    說明如何建立和使用 Windows PowerShell 設定檔。

完整描述
    您可以建立 Windows PowerShell 設定檔來自訂您的環境,並將工作階段專屬的項目
    新增至您啟動的每個 Windows PowerShell 工作階段。

    Windows PowerShell 設定檔是在 Windows PowerShell 啟動時所執行的指令碼。您
    可以使用設定檔做為登入指令碼以自訂環境。您可以新增命令、別名、函數、變數、
    嵌入式管理單元、模組和 Windows PowerShell 磁碟機。您也可以在設定檔中新增
    其他工作階段專屬的項目,讓每個工作階段不需要匯入或重新建立這些項目,就可
    以使用這些項目。

    Windows PowerShell 支援數種使用者和主機程式的設定檔,
    但是並沒有為您建立設定檔。本主題說明設定檔,並說明如何在您的電腦上建立和維
    護設定檔。

    其中會說明如何使用 Windows PowerShell 主控台 (PowerShell.exe) 的 NoProfile
    參數,以不使用任何設定檔的方式啟動 Windows PowerShell。
    此外,也會說明 Windows PowerShell 執行原則對設定檔的影響。


 設定檔檔案

    Windows PowerShell 支援數種設定檔檔案。同時,Windows PowerShell 主機程式可
    以支援其自身的主機專屬設定檔。

    例如,Windows PowerShell 主控台支援下列基本設定檔檔案。這些設定檔是依優先
    順序列出的。第一個設定檔具有最高的優先順序。


        描述                       路徑
        -----------                ----
        目前使用者、目前主機       $Home\[My ]Documents\WindowsPowerShell
                                   \Profile.ps1
        目前使用者、所有主機       $Home\[My ]Documents\Profile.ps1
        所有使用者、目前主機       $PsHome\Microsoft.PowerShell_profile.ps1
        所有使用者、所有主機       $PsHome\Profile.ps1

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

        - $PsHome 變數:用於存放 Windows PowerShell 的安裝目錄。

        - $Home 變數:用於存放目前使用者的主目錄。


    此外,其他裝載 Windows PowerShell 的程式可以支援其自身的設定檔。例如,
    Windows PowerShell 整合式指令碼環境 (ISE) 支援下列主機專屬設定檔。


        描述                       路徑
        -----------                -----
        目前使用者、目前主機       $Home\[My ]Documents\WindowsPowerShell\
                                    Microsoft.PowerShellISE_profile.ps1
        所有使用者、目前主機       $PsHome\Microsoft.PowerShellISE_profile.ps1


    在 Windows PowerShell 說明中,大部分提及的「您的 Windows PowerShell 設定
    檔」是指「目前使用者、目前主機」設定檔。

 $PROFILE 變數

    $Profile 自動變數會存放目前工作階段中可以使用的 Windows PowerShell 設定
    檔的路徑。

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

    $Profile 變數存放的是「目前使用者、目前主機」設定檔路徑。其他設定檔是儲存
    在 $profile 變數的附註屬性中。
    
    例如,$Profile 變數在 Windows PowerShell 主控台中具有下列值。


        名稱                               描述                
        -----------                        -----------
        $Profile                           目前使用者、目前主機  
        $Profile.CurrentUserCurrentHost    目前使用者、目前主機  
        $Profile.CurrentUserAllHosts       目前使用者、所有主機     
        $Profile.AllUsersCurrentHost       所有使用者、目前主機    
        $Profile.AllUsersAllHosts          所有使用者、所有主機       

    因為 $Profile 變數值會隨著每個使用者和每個主機應用程式而變更,請確認您在每
    個 Windows PowerShell 主機應用程式中顯示的是您所使用的設定檔變數值。

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

        $profile | get-member -type noteproperty

    
    在許多命令中都可以使用 $Profile 變數。例如,下列命令會在記事本中開啟「目前
    使用者、目前主機」設定檔:

	notepad $profile 


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

	test-path $profile.AllUsersAllHosts


 如何建立設定檔

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

        if (!(test-path <profile-name>)) 
           {new-item -type file -path <profile-name> -force}


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

        if (!(test-path $profile)) 
           {new-item -type file -path $profile -force}


    在這個命令中,If 陳述式會防止您使用您想要建立的設定檔檔案的路徑,覆寫現有
    的預留位置。

    注意:若要在 Windows Vista 和較新版本的 Windows 上建立「所有使用者」設定
    檔,請使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。


 如何編輯設定檔

    您可以在記事本這類的文字編輯器中,開啟任何 Windows PowerShell 設定檔。

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

        notepad $profile


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

        notepad $profile.AllUsersAllHosts


    若要套用變更,請儲存設定檔檔案,然後再重新啟動 Windows PowerShell。
 

 如何選擇設定檔

    如果您會使用多個主機應用程式,請將所有主機應用程式都會使用到的項目,放入您
    的 $Profile.CurrentUserAllHosts 設定檔。
    而專屬於主機應用程式的項目,例如用於設定主機應用程式背景色彩的命令,則放入
    專屬於該主機應用程式的設定檔。

    如果您是系統管理員,正在為許多使用者自訂 Windows PowerShell,則請遵循下列
    方針:

        -- 將一般項目存放在 $profile.AllUsersAllHosts 設定檔。

        -- 將專屬於主機應用程式的項目,存放在專屬於該主機應用程式的 
           $profile.AllUsersCurrentHost 設定檔。

        -- 將特殊使用者的項目存放在使用者專屬的設定檔。

    請務必檢查主機應用程式的說明文件,以查看是否有任何 Windows PowerShell 設定
    檔的特別實作方式。


 如何使用設定檔

    您在 Windows PowerShell 中建立的許多項目,以及您所執行的大部分命令,只對目
    前的工作階段有作用。當您結束工作階段時,就會刪除這些項目。

    工作階段專屬的命令和項目包含有您新增至工作階段的變數、喜好設定變數、別名、
    函數、命令 (除了 Set-ExecutionPolicy 之外) 以及 Windows PowerShell 嵌入式
    管理單元。

    若要儲存這些項目並供給所有未來的工作階段使用,請將其加入到
     Windows PowerShell 設定檔中。

    設定檔的另一個常見使用方式,是用於儲存經常使用的函數、別名和變數。當您將這
    些項目儲存在設定檔中時,就不需要重新建立這些項目,即可以在任何適用的工作階
    段中進行使用。


 如何啟動設定檔

    設定檔檔案在您開啟時是空白的。然而,您可以填入您經常使用的變數、別名和命令。

    這裡提供您一些開始使用的建議:

    -- 新增可以輕鬆開啟設定檔的命令。如果您是使用「目前使用者、目前主機」設定
       檔之外的設定檔,這個命令就特別好用。例如,新增下列命令:
               
           function pro {notepad $profile.CurrentUserAllHosts}


    -- 新增可以開啟 Windows PowerShell 說明 (格式為編譯好的 HTML 說明檔 (.chm))
       的函數。

           function Get-CHM
            {
               (invoke-item $env:windir\help\mui\0409\WindowsPowerShellHelp.chm)
            }

       
       這個函數會開啟英文版的 .chm 檔案。然而,您可以取代語言代碼 (0409),開啟
       其他版本的 .chm 檔案。

    
    -- 新增用於列出任何 cmdlet 別名的函數。

           function Get-CmdletAlias ($cmdletname)
           {
              get-alias | Where {$_.definition -like "*$cmdletname*"} 
                        | ft Definition, Name -auto
           }


    -- 新增 Add-PsSnapin 命令,加入您使用的任何 Windows PowerShell 嵌入式管理
       單元。

    -- 自訂您的主控台。

           function Color-Console 
           {
	        $host.ui.rawui.backgroundcolor = "white"
	        $host.ui.rawui.foregroundcolor = "black"
                $hosttime = (dir $pshome\powershell.exe).creationtime
                $Host.UI.RawUI.WindowTitle = "Windows PowerShell $hostversion 
                                              ($hosttime)"
                clear-host
           }
           Color-console


    -- 新增自訂的 Windows PowerShell 命令提示字元,其中包含電腦名稱和目前路徑。

           function prompt 
           {
              $env:computername + "\" + (get-location) + "> "
           }


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


 NOPROFILE 參數

    若要以不使用設定檔的方式啟動 Windows PowerShell,請對用於啟動
    Windows PowerShell 的 PowerShell.exe 程式,使用 NoProfile 參數。

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

    請輸入:

	powershell -noprofile

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

	powershell -?


 設定檔和執行原則

    Windows PowerShell 執行原則在某種程度上會決定您是否可以執行指令碼和載入組
    態檔,包含設定檔。Restricted 執行原則是預設值。它會防止所有的指令碼執行,
    包含設定檔。如果您使用的是 Restricted 原則,設定檔就不會執行,因而不會套
    用其內容。

    Set-ExecutionPolicy 命令可以設定和變更您的執行原則。它是會套用到所有 
    Windows PowerShell 工作階段的少數幾個命令中的一個,因為其值是儲存在登錄
    中。您不需要在開啟主控台時設定它,也不需要在設定檔中存放 
    Set-ExecutionPolicy 命令。


 設定檔和遠端工作階段   

    Windows PowerShell 設定檔不會在遠端工作階段中自動執行,所以遠端工作階段中
    不會存在設定檔所加入的命令。
    此外,遠端工作階段中並沒有填入 $profile 自動變數。

    若要在工作階段中執行設定檔,請使用 Invoke-Command Cmdlet。

    例如,下列命令會在 $s 的工作階段中,從本機電腦執行 CurrentUserCurrentHost 
    設定檔。

        invoke-command -session $s -filepath $profile

    下列命令會在 $s 的工作階段中,從遠端電腦執行 CurrentUserCurrentHost 設定
    檔。因為沒有填入 $profile 變數,命令會使用設定檔的明確路徑。

        invoke-command -session $s {invoke-expression 
        "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

    執行這個命令後,在 $s 中就可以使用由設定檔加入到工作階段中的命令。


請參閱
    about_Automatic_Variables
    about_Functions
    about_Prompts
    about_Execution_Policies
    about_Signing
    about_Remote
    Set-ExecutionPolicy





目錄