about_Profiles

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0

トピック

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 コンソールは、次の基本的なプロファイル ファイルをサポートしています。ポリシーは優先順位順に一覧表示されます。最初のプロファイルは最高の優先順位を持ちます。

        Description                Path
        -----------                ----
        Current User, Current Host $Home\[My ]Documents\WindowsPowerShell\Profile.ps1
        Current User, All Hosts    $Home\[My ]Documents\Profile.ps1
        All Users, Current Host    $PsHome\Microsoft.PowerShell_profile.ps1
        All Users, All Hosts       $PsHome\Profile.ps1

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

- $PsHome 変数。Windows PowerShell のインストール ディレクトリを格納します。

- $Home 変数。現在のユーザーのホーム ディレクトリを格納します。

さらに、Windows PowerShell をホストする他のプログラムは独自のプロファイルをサポートできます。たとえば、Windows PowerShell Integrated Scripting Environment (ISE) は、次のホスト固有プロファイルをサポートしています。

        Description                Path
        -----------                -----
        Current user, Current Host $Home\[My ]Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
        All users, Current Host    $PsHome\Microsoft.PowerShellISE_profile.ps1

Windows PowerShell ヘルプでは、"CurrentUser, Current Host" プロファイルは「Windows PowerShell プロファイル」として参照されることが最も多いプロファイルです。

$Profile 変数

$Profile 自動変数は、現在のセッションで使用可能な Windows PowerShell プロファイルへのパスを格納します。

プロファイルのパスを表示するには、$Profile 変数の値を表示します。また、パスを表すために、コマンドで $Profile 変数を使用することができます。

$Profile 変数は "Current User, Current Host" プロファイルへのパスを格納します。他のプロファイルは、$profile 変数のノートのプロパティに保存されます。

たとえば、$Profile 変数は Windows PowerShell コンソールで次の値を持ちます。

        Name                               Description                
        -----------                        -----------
        $Profile                           Current User,Current Host  
        $Profile.CurrentUserCurrentHost    Current User,Current Host  
        $Profile.CurrentUserAllHosts       Current User,All Hosts     
        $Profile.AllUsersCurrentHost       All Users, Current Host    
        $Profile.AllUsersAllHosts          All Users, All Hosts       
 

$Profile 変数の値は各ユーザーおよび各ホスト アプリケーションで変化するため、必ず、使用する各 Windows PowerShell ホスト アプリケーションでプロファイル変数の値を表示してください。

$Profile 変数の現在の値を表示するには、次のように入力します。

        $profile | get-member -type noteproperty

多くのコマンドで $Profile 変数を使用できます。たとえば、次のコマンドは、メモ帳で "Current User, Current Host" プロファイルを開きます。

notepad $profile 

次のコマンドは、ローカル コンピューターで "All Users, All Hosts" プロファイルが作成されたかどうかを判別します。

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 で "All Users" プロファイルを作成するには、[管理者として実行] オプションを使用して 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 プロファイルに追加します。

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

プロファイルの開始方法

プロファイル ファイルを開くと空白です。ただし、頻繁に使用する変数、エイリアス、およびコマンドを入力できます。

開始するためのいくつかの推奨事項を次に示します。

--プロファイルを開くのを容易にするコマンドを追加します。これは、"Current User, Current Host" プロファイル以外のプロファイルを使用する場合に特に便利です。たとえば、次のコマンドを追加します。

           function pro {notepad $profile.CurrentUserAllHosts}

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

           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
           }

--使用する任意の Windows PowerShell スナップインを追加するために Add-PsSnapin コマンドを追加します。

--コンソールをカスタマイズします。

           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 実行ポリシーは、プロファイルを含め、スクリプトの実行および構成ファイルの読み込みが可能かどうかを部分的に判別します。制限付きの実行ポリシーが既定値です。その場合、プロファイルを含め、すべてのスクリプトは実行を禁止されます。制限付きのポリシーを使用する場合は、プロファイルは実行されず、その内容は適用されません。

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-command "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

このコマンドを実行した後は、プロファイルによってセッションに追加されたコマンドが $s で使用可能になります。

関連項目

about_Automatic_Variables

about_Functions

about_Prompts

about_Execution_Policies

about_Signing

about_Remote に関するページ

Set-ExecutionPolicy