このチュートリアルでは、PowerShell プロファイルとその使用について見ていきます。 PowerShell プロファイルは、環境をカスタマイズし、PowerShell セッションを開始するたびに要素を追加するのに役立ちます。 PowerShell プロファイルは、PowerShell を起動するたびに実行されるスクリプトです。 PowerShellプロファイルをログオンスクリプトとして使用することで、環境をカスタマイズすることができます。 PowerShellプロファイルを使用することで、コマンド、エイリアス、関数、変数、スナップイン、モジュール、PSDrives、その他セッション固有の要素をevnironmetに追加することができます。 PowerShellを実行するたびに、それらをインポートしたり、再作成したりする必要はありません。 自動的に読み込まれます。 PowerShellは、ユーザとホスト・プログラムについて、いくつかのプロファイルをサポートしています。 PowerShell がプロファイルを作成することはありません。
頻繁に使用するセッション固有のコマンド、変数、環境変数、エイリアス、関数、コマンド (Set-ExecutionPolicy を除く)、および PowerShell モジュールが欲しい場合は、プロファイルを使用して今後のすべてのセッションで読み込むことが可能です。
プロファイルファイル
PowerShell コンソールでは、次のプロファイルをサポートしています。
-
$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
– 現在のユーザー、現在のホスト -
$Home\Documents\PowerShell\Profile.ps1
– 現在のユーザー、すべてのホスト -
$PsHome\Microsoft.PowerShell_profile.ps1
– すべてのユーザー、現在のホスト -
$PsHome\Profile.ps1
– すべてのユーザー、すべてのホスト
上記のプロファイルは優先順で表示されています。 リストの最初のプロファイルが最も高い優先順位を持ちます。 上記のプロファイルでわかるように、2つの変数を持っています。 $PSHome
と $Home
変数は以下の値を提示します。
-
$PSHome
– PowerShell のインストール ディレクトリを格納 -
$Home
– 現在のユーザーのホーム ディレクトリを格納
PowerShell をホストする他のプログラムも独自のプロファイルをサポートすることが可能です。 PowerShell 統合スクリプト環境 (ISE) は、次のホスト固有のプロファイルをサポートします。
-
$Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
– 現在のユーザー、現在のホスト -
$PsHome\Microsoft.PowerShellISE_profile.ps1
– すべてのユーザー、現在のホスト
Microsoft によれば、PowerShell ヘルプでは、「CurrentUser、現在のホスト」プロファイルが最も頻繁に「あなたのPowerShellプロファイル」と呼ばれるプロファイルとされるとのことです。
プロファイル変数
PowerShell では、$Profile
という自動変数があります。 現在のセッションで利用可能なすべてのPowerShellプロファイルのパスは、$Profile
変数に格納されます。 $Profile
変数を表示することで、プロファイルのパスを確認できます。
$Profile
変数には、「現在のユーザー、現在のホスト」プロファイルのパスが格納されます。 その他のプロファイルは、$Profile
変数のノートプロパティに保存されます。
変数のプロパティを使用してプロファイルを指定することができます。 Windows PowerShell コンソールでは、$Profile
変数に以下の値を設定しています。
-
$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
変数の使用は許可されているようですが、その内容は次のとおりです。
Code:
Test-Path -Path $PROFILETest-Path -Path $PROFILE.CurrentUserCurrentHostTest-Path -Path $PROFILE.CurrentUserAllHostsTest-Path -Path $PROFILE.AllUsersCurrentHostTest-Path -Path $PROFILE.AllUsersAllHosts
Output:
上記のコマンドは、指定したプロファイルが作成されているかどうかをテストしています。 ご覧のように、答えはすべて「false」です。 前にも述べたように、プロファイルはデフォルトでは作成されません。
Create a profile
プロファイルを作成するには、次のコマンドを使用する必要があります。
Code:
New-Item -ItemType File -Path $profile -Force
上記のコマンドは、「現在のユーザー、現在のホスト」用のプロファイルを作成します。
Code:
if (-not (Test-Path -Path $profile.AllUsersAllHosts)){ New-Item -ItemType File -Path $profile.AllUsersAllHosts -Force}
上記のコマンドは、「すべてのユーザー、すべてのホスト」用のプロファイルがあるかどうかを確認し、存在しない場合はプロファイルを作成します。
プロファイルの編集
プロファイルが存在し、いくつかの変更または追加を適用する必要がある場合、プロファイルを編集するためにテキスト エディターを使用する必要があります。
Code:
notepad $profile
以下に示すように、私の現在のプロファイルは、コンソールを開いたときに Welcome メッセージを提供するように設定されています。
次に、上記のコマンドを使って私のプロファイルにいくつかの変更を適用してみます。
その後 PowerShell コンソールを再起動すると、ご覧のように変更が適用されています。
プロファイル ガイドライン
以下では、Microsoft が提供している、プロファイルを設定するためのガイドラインをいくつか紹介したいと思います。
複数のホスト アプリケーションを使用している場合、すべてのホスト アプリケーションで使用する項目を
$Profile.CurrentUserAllHosts
プロファイルに含めます。 ホストアプリケーションの背景色を設定するコマンドなど、ホストアプリケーションに固有の項目は、そのホストアプリケーションに固有のプロファイルに入れます。多くのユーザー向けに PowerShell をカスタマイズしている管理者は、次のガイドラインに従ってください。
- 共通のアイテムは
$profile.AllUsersAllHosts
プロファイルに格納する- ホスト アプリケーションに固有のアイテムは、ホスト アプリケーション固有の
$profile.AllUsersCurrentHost
プロファイルに格納する- 特定のユーザー用のアイテムはユーザー固有のプロファイルに格納する
PowerShell プロファイルの特別な実装については、必ずホスト アプリケーションのドキュメントを確認することです。
プロファイルなし
コンソールを開くたびにロードするプロファイルを作成した場合でも、ロードするプロファイルなしで PowerShell を実行することは許可されています。 これは、-NoProfile
パラメータを指定してPowerShellを実行することで可能です。 これは、cmd.exe、Run ダイアログ ボックス、または PowerShell 自体から実行できます。
Code:
PowerShell -NoProfile
実行ポリシー
PowerShell実行ポリシーは、プロファイルを含むスクリプトの実行と構成ファイルのロードが可能かどうかを判断するものです。 デフォルトでは、「制限付き」の実行ポリシーが設定されています。 PowerShellの実行ポリシーの詳細については、こちらを参照してください。 制限付き」ポリシーを使用する場合、プロファイルを含むすべてのスクリプトの実行ができなくなります。 プロファイルの内容は適用されません。 Set-ExecutionPolicy
コマンドは、レジストリに値が保存されるため、すべての PowerShell セッションで実行ポリシーを設定および変更します。 コンソールを開いたときに設定したり、プロファイルに Set-ExecutionPolicy
コマンドを保存する必要はありません。
Profile on remote session
PowerShell プロファイルはリモートセッションで自動的に実行されないので、プロファイルが追加するコマンドはリモートセッションに存在しません。
ローカル コンピューターからリモート セッションにプロファイルを実行するには、Invoke-Command
コマンドレットを使用する必要があります。
次の例は、ローカル プロファイルをリモート セッションに実行します。
Code:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -FilePath $profile
Output:
リモート セッションにプロファイルが入力されないため、リモート プロファイルをセッションに読み込むこともできます。 以下の例を確認してください。
Code:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -ScriptBlock {. "$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Output:
PowerShell Profiles についてのチュートリアルがお役に立てれば幸いです。
関連リンク
- PowerShell チュートリアル
- PowerShell スクリプト
- about_Profiles | Microsoft Docs
- PowerShell 自動変数
- PowerShell 論理演算子
- Test-
- PowerShell プロファイル
- PowerShell プロファイル
- PowerShell プロファイル
- PowerShell プロファイル
- PowerShell プロファイル6416パス – Microsoft Docs
- New-…項目 – Microsoft Docs
- Write-Output – Microsoft Docs
- Set-ExecutionPolicy – Microsoft Docs
- Invoke-…コマンド – Microsoft Docs
PowerShell プロファイル
PowerShell Profiles.NET.NET.NET.COM