- 11/30/2017
- 7分で読める
-
- S
- s
- x
- q
- The
$PSHOME
variable, which stores the installation directory for PowerShell - The
$Home
variable, which stores the current user’s home directory
概要
PowerShellプロファイルの作成と使用方法について説明しています。
Long Description
PowerShellプロファイルを作成すると、環境をカスタマイズしたり、起動するすべてのPowerShellセッションにセッション固有の要素を追加することができます。 プロファイルをログオンスクリプトとして使用し、環境をカスタマイズすることができます。 コマンド、エイリアス、関数、変数、スナップイン、モジュール、および PowerShelldrives を追加することができます。 また、他のセッション固有の要素をプロファイルに追加し、それらをインポートまたは再作成することなく、すべてのセッションで利用できるようにすることもできます。
PowerShell はユーザーおよびホスト プログラム用にいくつかのプロファイルをサポートしています。 しかし、PowerShell はプロファイルを作成しません。
PowerShellコンソール(PowerShell.exe)のNoProfileパラメータを使用して、プロファイルを作成せずにPowerShellを起動する方法について説明します。
プロファイルファイル
PowerShellは、いくつかのプロファイルファイルをサポートしています。 また、PowerShell ホスト プログラムは、独自のホスト固有のプロファイルをサポートできます。
たとえば、PowerShell コンソールは、次の基本プロファイル ファイルをサポートします。 プロファイルは優先順位の高い順に表示されます。
Description | Path | |||
---|---|---|---|---|
All Users, All Hosts | $PSHOMEProfile.All Hosts | $PSHOMEProfile.Description。ps1 | ||
All Users, Current Host | $PSHOMEMicrosoft.PowerShell_profile.ps1 | |||
Current User, All Hosts | $HomeDocuments\PowerShell_profile.ps2 | |||
$PSHOME_Documents ↵PowerShell_Profile.ps2ps1 | ||||
Current user, Current Host | $HomeDocuments Microsoft.PowerShell_profile.Of.Pirates |
$HomeDocuments | $PowerShell_Profile.ps1 |
プロファイル パスには次の変数が含まれます。
さらに、PowerShell をホストする他のプログラムでは独自のプロファイルをサポートできるようになりました。 たとえば、Visual Studio Code は次のホスト固有のプロファイルをサポートします。
Description | Path | |
---|---|---|
All users, Current Host | $PSHOME\Microsoft.PowerShell.Host | |
Current user, Current Host | $HomeDocuments\PowerShell Microsoft.VSCode_profile.VSCode_profile.ps1 |
$HomeDocuments\PowerShell |
In PowerShell Help, the “CurrentUser, Current Host” profile is the profile most often referred as “your PowerShell profile”.
The $PROFILE variable
The $PROFILE
automatic variable stores the path to the PowerShell profilest that are available in the current session.
To see a profile path, display the value of the $PROFILE
variable.そのパスを見るためには、その変数の値を表示します。
変数$PROFILE
には、”Current User, Current Host “プロファイルへのパスが格納されます。
たとえば、WindowsPowerShellコンソールでは、$PROFILE
変数に次の値が格納されています。
Description | Name |
---|---|
現在のユーザー、現在のホスト | $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
文が既存のプロファイルを上書きすることを防ぎます。 <profile-path> プレースホルダーの値を、作成するプロファイルファイルのパスに置き換えます。
注意
Windows Vista以降のバージョンで「すべてのユーザー」プロファイルを作成するには、管理者として実行オプションでPowerShellを起動します。
プロファイルの編集方法
メモ帳などのテキスト エディターで PowerShell のプロファイルを開くことができます。 たとえば、すべてのホストアプリケーションのすべてのユーザーのプロファイルを開くには、:
notepad $PROFILE.AllUsersAllHosts
変更を適用するには、プロファイルファイルを保存し、PowerShell を再起動します。
プロファイルの選択方法
複数のホストアプリケーションを使用している場合、すべてのホストアプリケーションで使用する項目を $PROFILE.CurrentUserAllHosts
プロファイルにまとめます。 ホストアプリケーションの背景色を設定するコマンドなど、ホストアプリケーションに固有の項目は、そのホストアプリケーションに固有のプロファイルに入れます。
多くのユーザーのために PowerShell をカスタマイズしている管理者は、次のガイドラインに従ってください。
- 共通の項目を
$PROFILE.AllUsersAllHosts
プロファイルに格納する - ホスト アプリケーションに固有の項目をホスト アプリケーションに固有の
$PROFILE.AllUsersCurrentHost
プロファイルに格納する - 特定のユーザー用の項目をユーザー固有のプロファイルに格納する
ホスト アプリケーションで、PowerShell プロファイルの特殊実装を確認するようにしてください。
プロファイルの使用方法
PowerShellで作成する項目の多くと実行するコマンドのほとんどは、現在のセッションにのみ影響を及ぼします。 セッションを終了すると、項目は削除されます。
セッション固有のコマンドと項目には、変数、環境変数、エイリアス、関数、コマンド (Set-ExecutionPolicy を除く)、およびセッションに追加した PowerShell モジュールが含まれます。
これらの項目を保存して今後のすべてのセッションで有効にするには、PowerShell プロファイルにそれらを追加します。 プロファイルに項目を保存すると、それらを再作成することなく、適用可能なあらゆるセッションで使用できます。
プロファイルの開始方法
プロファイル ファイルを開くと、それは空白になっています。
プロファイルを開きやすくするコマンドを追加する
これは、「現在のユーザー、現在のホスト」プロファイル以外のプロファイルを使用する場合に特に有用です。 たとえば、次のコマンドを追加します。
function Pro {notepad $PROFILE.CurrentUserAllHosts}
任意のコマンドレットのエイリアスを一覧表示する機能を追加する
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を起動するプログラムであるPowerShell.exeのNoProfileパラメータを使用します。
最初に、PowerShellを起動できるプログラム、例えばCmd.exeやPowerShell自身を開いてください。
Type:
PowerShell -NoProfile
PowerShell.exeのパラメータの完全なリストについては、Type:
PowerShell -?
プロファイルと実行ポリシー
PowerShell実行ポリシーは、部分的には、プロファイルを含む、実行可能か、設定ファイルをロード可能かを決定する。 Restrictedexecutionポリシーはデフォルトです。 このポリシーでは、プロファイルを含むすべてのスクリプトの実行を禁止します。 Restricted」ポリシーを使用すると、プロファイルは実行されず、その内容は適用されません。
A Set-ExecutionPolicy
コマンドは、実行ポリシーを設定および変更します。 このコマンドは、値がレジストリに保存されるため、すべての PowerShell セッションで適用される数少ないコマンドの 1 つです。
プロファイルとリモートセッション
PowerShell プロファイルはリモートセッションで自動的に実行されないため、プロファイルが追加するコマンドはリモートセッションに存在しません。
セッションでプロファイルを実行するには、Invoke-Commandcmdlet を使用します。
たとえば、次のコマンドは、$s
のセッションでローカル コンピューターから “Current user, Current Host” というプロファイルを実行します。 $PROFILE
変数が入力されていないため、このコマンドではプロファイルへの明示的なパスが使用されます。
Invoke-Command -Session $s -ScriptBlock { . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
このコマンドを実行すると、プロファイルがセッションに追加したコマンドが$s
で使用できるようになります。
関連項目
自動変数について
関数について
プロンプトについて
実行ポリシーについて
署名について
リモートについて
スコープについて
実行ポリシー設定