トピック
    about_Profiles

簡易説明
    Windows PowerShell プロファイルを作成および使用する方法について説明します。

詳細説明
    Windows PowerShell プロファイルを作成して、環境をカスタマイズし、起動するすべての Windows 
    PowerShell セッションにセッション固有の要素を追加できます。

    Windows PowerShell プロファイルは、Windows PowerShell の起動時に動作するスクリプトです。このプ
    ロファイルをログオン スクリプトとして使用して、環境をカスタマイズできます。コマンド、エイリアス、関数、
    変数、スナップイン、モジュール、および Windows PowerShell ドライブを追加できます。プロファイルに他
    のセッション固有の要素を追加して、これらの要素をインポートまたは再作成することなくすべてのセッションで
    利用可能にすることもできます。

    Windows PowerShell は、ユーザーおよびホスト プログラムに対する複数のプロファイルをサポートします。
    ただし、個々のユーザーに対するプロファイルは作成されません。このトピックでは、プロファイルについて説明し、
    コンピューター上でプロファイルを作成および保持する方法について説明します。

    Windows PowerShell コンソールの NoProfile パラメーター (PowerShell.exe) 
    を使用して、プロファイルを使用することなく 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

    プロファイルのパスには次の変数が含まれています。

        - Windows PowerShell のインストール ディレクトリを保存する $PsHome 変数。

        - 現在のユーザーのホーム ディレクトリを保存する $Home 変数。


    さらに、Windows PowerShell をホストする他のプログラムは、独自のプロファイルをサポート
    している可能性があります。たとえば、Windows PowerShell Integrated Scripting Environment 
    (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 ステートメントによって、既存のプロファイルへの上書きが防止されます。
    <profile-path> プレースホルダーの値を、作成するプロファイル ファイルへのパスで置き換えます。

    注: Windows Vista 以降のバージョンの Windows で "すべてのユーザー" プロファイルを作成するには、
    Windows PowerShell を起動する際に [管理者として実行] を指定する必要があります。



 方法: プロファイルを編集する

    任意の Windows PowerShell プロファイルをメモ帳などのテキスト エディターで開くことができます。

    現在の Windows PowerShell ホスト アプリケーションの現在のユーザーのプロファイルをメモ帳で開くには、次の
    ように入力します。

        notepad $profile


    他のプロファイルを開くには、プロファイル名を指定します。たとえば、すべてのホスト アプリケーションのす
    べてのユーザーのプロファイルを開くには、次のように入力します。

        notepad $profile.AllUsersAllHosts


    変更を適用するには、プロファイル ファイルを保存して、Windows PowerShell を再起動します。
 

 方法: プロファイルを選択する

    複数のホスト アプリケーションを使用する場合、すべてのホスト アプリケーションで使用する項目を 
    $Profile.CurrentUserAllHosts プロファイルに追加します。
    ホスト アプリケーションの背景色を設定するコマンドなど、1 つのホスト アプリケーションに固有の項目は、
    そのホスト アプリケーションに固有のプロファイルに追加します。

    多数のユーザーに対して Windows PowerShell をカスタマイズする管理者である場合は、次のガイドラインに従っ
    てください。

        -- 共通項目は $profile.AllUsersAllHosts プロファイルに保存します。

        -- 1 つのホスト アプリケーションに固有の項目は、ホスト アプリケーションに固有の 
           $profile.AllUsersCurrentHost プロファイルに保存します。

        -- 特定のユーザーの項目は、ユーザー固有のプロファイルに保存します。

    Windows PowerShell プロファイルの特殊な実装については、ホスト アプリケーションのドキュメントを確認して
    ください。


 方法: プロファイルを使用する

    Windows PowerShell で作成する多くの項目および実行するほとんどのコマンドは、現在のセッションにのみ
    影響します。セッションを終了すると、項目は削除されます。

    セッション固有のコマンドと項目には、ユーザーがセッションに追加する変数、ユーザー設定変数、
    エイリアス、関数、コマンド (Set-ExecutionPolicy を除く)、および Windows PowerShell スナッ
    プインがあります。

    これらの項目を保存して、将来のすべてのセッションで利用可能にするには、Windows PowerShell プロファイルに
    これらの項目を追加します。

    プロファイルのもう 1 つの一般的な使用方法として、頻繁に使用される関数、エイリアス、および変数の保存が
    あります。プロファイルに項目を保存すると、これらを再作成することなく適用可能な任意のセッションで使用で
    きます。


 方法: プロファイルを起動する

    プロファイル ファイルを開くと、空白になっています。このプロファイル ファイルには、頻繁に使用する変数、
    エイリアス、およびコマンドを追加できます。

    起動に関するいくつかの操作方法を紹介します。

    -- プロファイルを簡単に開くためのコマンドを追加します。これは、"現在のユーザー、現在のホスト" プロ
       ファイル以外のプロファイルを使用する場合に特に便利です。たとえば、次のコマンドを追加します。
               
           function pro {notepad $profile.CurrentUserAllHosts}


    -- コンパイル済み HTML ヘルプ ファイル (.chm) にある Windows PowerShell ヘルプを開く関数を追加し
       ます。

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

       
       この関数は、.chm ファイルの英語バージョンを開きます。ただし、言語コード (0409) を置き換えて、他のバ
       ージョンの .chm ファイルを開くこともできます。

    
    -- 任意のコマンドレットのエイリアスを一覧表示する関数を追加します。

           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 パラメーターを使用します。

    まず、Cmd.exe や Windows PowerShell 自体など、Windows PowerShell 
    を起動可能なプログラムを開きます。Windows で [ファイル名を指定して実行] ダイアログ ボックスを使用すること
    もできます。

    次のように入力します。

	powershell -noprofile

    PowerShell.exe のパラメーターの完全な一覧を表示するには、次のように入力します。

	powershell -?


 プロファイルと実行ポリシー

    Windows PowerShell 実行ポリシーは、ユーザーがスクリプトを実行し、プロファイルなどの構成ファイルを読み込
    むことができるかどうかを決定する場合に使用できます。既定では、Restricted 実行ポリシーが使用されます。この
    ポリシーは、プロファイルを含むすべてのスクリプトが実行されないようにします。Restricted ポリシーを使用する
    場合、プロファイルは実行されず、その内容は適用されません。

    Set-ExecutionPolicy コマンドは、実行ポリシーを設定および変更します。このコマンドは、値がレジストリ
    に保存されているためにすべての Windows PowerShell セッションに適用されるいくつかのコマンドの 1 つです。
    コンソールを開くときに Set-ExecutionPolicy コマンドを設定したり、このコマンドをプロファイルに保存する
    必要はありません。


 プロファイルとリモート セッション

    リモート セッションでは Windows PowerShell プロファイルが自動的に実行されないので、プロファイルによって
    追加されるコマンドはリモート セッションには適用されません。
    さらに、リモート セッションでは、$Profile 自動変数が設定されません。

    セッションでプロファイルを実行するには、Invoke-Command コマンドレットを使用します。

    たとえば、次のコマンドは、$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




目次