Share this post:
A PowerShell profile is script that run when PowerShell starts and has specific name.
PowerShell supports several profiles for users and host programs.PowerShell はユーザーとプログラムについて、いくつかのプロファイルをサポートしています。 ホスト プログラムというと、主に Windows PowerShell コンソールおよび Windows PowerShell ISE を思い浮かべます。 この記事では、素晴らしい例を用いてプロファイルを作成およびカスタマイズする方法を説明します。
システム上の各ユーザーに対して3つのプロファイル ファイルを作成でき、各ホスト (Windows PowerShell コンソールおよび ISE) に対して1つ、すべてのホストに対して1つ作成することができます。
さらに、すべてのユーザーに適用されるカスタマイズを適用する場合、すべてのユーザーに対して 3 つのプロファイル ファイルを作成することができます。
Table of Contents
PowerShell Profile Commands, Hosts, Profile Names, Profile Locations
Here are table that profile types, can be used to test whether the profile exists and create them if we want, Which Host this Profile applies to, Profile file name and Location of the profile file.
# | プロファイルタイプ | コマンド | ホスト | プロファイルファイル名 | プロファイルファイルの場所 | |||||
---|---|---|---|---|---|---|---|---|---|---|
1* | Current User.Create(現在のユーザー) | Comand (プロファイルファイルの場所) | Host | $profile | Console | Microsoft.PowerShell_profile.ps1 | $HOME Documents\WindowsPowerShell | |||
2 | All Users, Current Host | $profile.AllUsersCurrentHost | Console | Microsoft.PowerShell_profile.AllUsersCurrentHost | Microsoft.PowerShell_profile.ps2 | $profile.PowerShell_profile.ps2 | Microsoft.PowerShell_profile.ps1 | $PowerShell | Console | $PSHOME |
3 | 現在のユーザー、すべてのホスト | $profile.CurrentUserAllHosts | Console, ISE | Profile.Current UserAllHosts | Profile.AllUserAllHosts | Current User, All Hosts | Current User, All Hosts | $HOME DocumentsWindowsPowerShell | ||
4 | All Users, All Hosts | $profile.CurrentUser.Hosts | Profil.AllUsersAllHosts | Console, ISE | Profile.ps1 | $PSHOME | ||||
5** | Current user, Current Host | $profile | ISE | Microsoft.Office.X.S.A.S. | ユーザー名 | $profile.ps1 | $HOME Documents\WindowsPowerShell | |||
6** | All users, Current Host | $profile.AllUsersCurrentHost | ISE | Microsoft.PowerShellISE_profile.ps1 | $PSHOME |
表 1 – PowerShell Profile types, commands, hosts, file names, file locations
* instead of $profile we can use $profile.Utils.CurrentUserCurrentHostコマンド。
** Windows PowerShell ISEコンソールからコマンドを実行します。
PowerShell のインストールで変数 $HOME と $PSHOME に正しい値を見つけるには、次のコマンドを実行してください。\■■■■■■■■■■■■■■■■■←│
$PSHOME
Documents for $PSHOME is C:WindowsSystem 32 WindowsPowerShell99960
REMEMBER: PowerShell バージョン 6 を個別にインストールしている場合、追加のプロファイルを作成することが可能です。 現在のユーザーごとに 2 つ、すべてのユーザーに対して 2 つです。
# | Profile Type | Command | Host | Profile File Name | Profile ファイルの場所 | ||
---|---|---|---|---|---|---|---|
1 | CurrentUserCurrentHost | $profile | Console | Microsoft.NET Framework 2.0 | $HOME Documents\PowerShell | ||
2 | CurrentUserAllHosts | $profile.PowerShell | CurrentUserAll Hosts | CurrentUserAll Hosts | profile.ps1 | $HOME DocumentsPowerShell | |
3 | AllUsersCurrentHost | $profile.AllUserAllHosts | $profile.CurrentUserAllHosts | Package.ps1 | Console | Microsoft.PowerShell_profile.ps1 | $PSHOME |
4 | AllUsersAllHosts | $profile.AllUsersAllHosts | profile.AllUsersAll Hosts | Profiles.AllUsersAll Hosts | $Profile.AllUsersAll Hosts | $PSHOME |
Table 2 – PowerShell v6 Profile types, commands, hosts, file names, file locations
通常、$HOME の値は C. です。\⑭PowerShell v6 の $HOME の値
Unually, value for $PSHOME is C::\Intellectual PowerShell
NOTICE: Documents PowerShell v6のフォルダ名はPowerShell、以前のバージョンのPowerShellフォルダ名はWindowsPowerShellという違いがあります。
How To Create PowerShell Profile Step by Step
ここでは、PowerShellプロファイルを作成する方法を説明します。
Creating A PowerShell Profile For Current User And Current Host
これは、Windows PowerShellのデフォルトのプロファイルです。
次の手順に従って、ホストおよび現在のユーザーとしてのコンソール用の PowerShell プロファイルを作成します。
Step 1: Windows PowerShell コンソール(現在のホスト)を開きます。
ステップ 2: 最初に、PowerShell インストールにプロファイルが存在するかどうかテストします。 Window PowerShellコンソールで次のコマンドを入力し、ENTERを押します。
Test-Path $PROFILE
REMEMBER: Parameter value for Test-Path Cmd表2-コマンド欄から取得しましょう。 ($profile, $profile.CurrentUserAllHosts, etc)
Step 3: 前のコマンドの結果が false の場合、プロファイルは存在しないので、手順 4 に進みます。 結果がtrueの場合、プロファイルファイルは存在するので、手順5
手順4:プロファイルが存在しないので、次のコマンドを入力してENTERキーを押して、プロファイルを作成します。
New-Item -Type File -Force $PROFILE
ステップ 5:プロファイルが作成されて、PowerShell ISEでプロファイルファイルを以下のコマンドで開き、ENTERを押すことができるようになりました。
ise $PROFILE
ステップ6:空のプロファイルファイルがWindows PowerShell ISEで開かれた
Step 7: 例 1 に進み、このプロファイルをカスタマイズする方法を確認します。
現在のユーザーとすべてのホストの PowerShell プロファイルを作成する
PowerShell プロファイルを作成するには、次の手順に従います。
Step 1: Windows PowerShell コンソール (これは、コマンドを実行するためのホストに過ぎず、これらの手順は Windows PowerShell ISE でも実行できる)。
Step 2: 最初に、PowerShell インストールにプロファイルがあるかないかをテストします。 Window PowerShellコンソールで次のコマンドを入力し、ENTERを押します。
Test-Path $PROFILE.CurrentUserAllHosts
REMEMBER: Parameter value for Test-Path Cmd表2-コマンド欄から取得しましょう。 ($profile, $profile.CurrentUserAllHosts, etc)
Step 3: 前のコマンドの結果が false の場合、プロファイルは存在しないので、手順 4 に進みます。 結果がtrueの場合、プロファイルファイルは存在するので、ステップ5
ステップ4:プロファイルが存在しないので、次のコマンドを入力してENTERキーを押して、プロファイルを作成します。
New-Item -Type File -Force $PROFILE.CurrentUserAllHosts
ステップ5:プロファイルが作成されたので、次のコマンドでPowerShell ISEでプロファイル ファイルを開き、ENTERキーを押します。
ise $PROFILE.CurrentUserAllHosts
ステップ6:空のプロファイルファイルがWindows PowerShell ISEで開かれました
ステップ7:例2に進み、プロファイルをカスタマイズする方法を見ていきます。
他のプロファイル タイプについてもこのプロセスを繰り返します。AllUsersAllHosts
REMEMBER.AllUsersAllHosts
Windows PowerShell プロファイルの編集方法と例
例 1 – コンソールをホストと現在のユーザー(現在のユーザー – 現在のホスト)用のプロファイル
Profile Name.C/C/C (C:Customer)。 Microsoft.PowerShell_profile.ps1
Profile Location: $HomeDocuments\WindowsPowerShell
Used for: この例では、フォントの背景色を読みやすいように変更しています。
Microsoft.PowerShell_profile.ps1 プロファイル ファイル内のコードを以下に記載します。 プロファイル ファイル内のコードをコピーして変更を保存するだけで、同じカラー スキーマを持つことができます。
Set-PSReadLineOption -colors @{ Operator = 'Cyan' Parameter = 'Cyan' String = 'White'}
古いシステムで Set-PSReadLineOption CmdLet 設定は下の例のように少し違っていたことがあります。
Set-PSReadlineOption -TokenKind String -ForegroundColor MagentaSet-PSReadlineOption -TokenKind Operator -ForegroundColor CyanSet-PSReadlineOption -TokenKind Parameter -ForegroundColor Cyan
Font colors has been changed from this…
… → this…。
Get-PSReadLineOption CmdLet で有効な色引数および現在の引数値(色)を確認することができます。
例 2 – Windows PowerShell Console と ISE をホストとして両方扱うプロファイル (Current User – All Hosts)
Profile Name: profile.ps1
Profile Location: $HomeDocuments FilterWindowsPowerShell
Used for.ISE (WindowsのPowerShellコンソールとホストとしてISEを扱うプロファイル) Get-PSReadLineOption CmdLet と現在の色のスキーマ。 Windows PowerShell コンソールと ISE の両方を同時にカスタマイズしたい場合、または PowerShell コンソールと ISE の両方で独自の高度な関数または CmdLets を実行したい場合。
この例では、効率化ブースター PowerShell プロジェクトの一部である、私が書いたいくつかの CmdLets に対して、私自身の PowerShell モジュールをロードしています。 このプロジェクトは、いくつかのモジュールで構成された私自身の CmdLets のライブラリです。プロジェクト ファイルの zip ファイルをダウンロードして、自分の環境でテストし、このブログの記事で私について説明できるようにすることを強くお勧めします。ps1 profile file code
PowerShell Console を開くと、インポートしたモジュールが本当にロードされているか、次のコマンドですぐにテストすることができます。
Get-Module -ListAvailable
PowerShell Profiles, Modules and CmdLets interlinking についてより理解するには、この記事の次の小見出しをお読みください How To Organizing Your Own PowerShell CmdLets in PowerShell Modules And Which Profile To Use To Organizing That Structure and How We Link Together PowerShell Profile, Module, and CmdLet.
例 3 – ISE をホストとして使用するプロファイル (現在のユーザー – 現在のホスト)
Profile Name: Microsoft.PowerShellISE_profile.ps1
Profile Location: $HomeDocuments³³WindowsPowerShell
Used for:
Profile ファイルにコピーするコマンドは次のとおりです。
Import-Module 09addons
結果として、Windows PowerShell ISE の Add-ons は2つ存在することになります。 これらのコードを作成する方法について詳しく知るために、これらの 2 つの記事をお読みください。
- How To Write Advanced Functions Or CmdLets With PowerShell (Fast)
- How To Write PowerShell Function’s Or CmdLet’s Help (Fast)
PowerShell コンソールを開くと、インポートしたモジュールが本当にロードされているか、次のコマンドですぐにテストすることができます。
Get-Module -ListAvailable
NOTE: Windows PowerShell ISE 2 つのプロファイル ファイルから 4 つのモデルをインポート ( profile.ISE、profile.Module)します。ps1 と Microsoft.PowerShellISE_profile.ps1 ).
Example 4 – Profile For Both Windows PowerShell Console And ISE As Hosts (All Users – All Hosts)
Profile Name: profile.ps1
Profile Location: $PSHOME
Used for.ISE
Used for.ISEUsed for.ISEUsed for: この例では、現在のユーザーと管理者の両方で Window PowerShell コンソールと ISE のタイトルを変更しただけです。
以下はプロファイル ファイルのコードです。
$NTIdentity = ::GetCurrent()$NTPrincipal = new-object Security.Principal.WindowsPrincipal $NTIdentity$IsAdmin = $NTPrincipal.IsInRole(::Administrator)$hostversion="v$($Host.Version.Major).$($Host.Version.Minor)"$hostname = $host.NameIF ($IsAdmin){ if($hostname -eq "ConsoleHost") { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell $hostversion - Running as ADMINISTRATOR" } else { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell ISE $hostversion - Running as ADMINISTRATOR" }}Else{ if($hostname -eq "ConsoleHost") { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell $hostversion" } else { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell ISE $hostversion" }}
PowerShell コンソールと ISE の両方のタイトルにカスタム テキスト、ホスト名、PowerShell のバージョンが入っていることが分かります。
プロファイルに関して知っておくと便利なPowerShellコマンド
ここでは、プロファイルに関する情報を取得するために役立つPowerShellコマンドを紹介します。
profile コマンドのいずれかを実行した結果、プロファイル ファイルの場所が取得されます。
$profile$profile.AllUsersCurrentHost$profile.CurrentUserAllHosts$profile.AllUsersAllHosts
IMPORTANT: Windows PowerShell ISEをホストとしてプロファイルファイルの場所を見つけたい場合、Windows PowerShell ISEを開いてWindows PowerShell ISE Consoleからプロファイルコマンドを実行しなければなりません
Use Test-Path CmdLet to check profile file exists on the system or not.これはプロファイルファイルがシステムにあるかどうか確認するためのものです。 結果としてTrueを取得した場合、プロファイルが存在し、falseはプロファイルファイルが存在しないことを意味します。 表1 – PowerShell Profile types, commands, hosts, file names, file locationsにあるコマンドを使用して、他のプロファイルタイプが存在するかどうかを確認します。
Test-Path $PROFILE
このコードの行は、プロファイルファイルを作成するものです。 表 1 – PowerShell Profile types, commands, hosts, file names, file locations からコマンドを使用して、他のプロファイル タイプを作成します。
New-Item -Type File -Force $PROFILE.CurrentUserAllHosts
メモ帳または Window PowerShell ISE でプロファイル ファイルのコンテンツを読み取る場合は、次の 2 つのコマンドを使用します。
ise $PROFILEnotepad $PROFILE
PowerShell ISE は PowerShell コードを書くのにより便利な環境なので、個人的には Windows PowerShell ISE を好みます。
すべてのプロファイル タイプのプロファイル位置を取得するには、このコード行を使用します。
$profile | Get-Member -Type NoteProperty | Select-Object Definition
PowerShell インストールとホーム ディレクトリの場所をそれぞれ取得するには、これらの 2 つの変数を確認します。
$pshome$home
どのプロファイル ファイルを使用するかを選択する方法
Windows PowerShell コンソールや ISE など複数のホスト アプリケーションを使用する場合、すべてのカスタマイズを現在のログオン ユーザー用の $PROFILE.CurrentUserAllHosts プロファイルに記述してください。 例えば、私はCmdLetsをModuleに整理して作成したので、PowerShellコンソールとISEの両方を開いたときにモジュールをロードさせたいので、このプロファイルにモジュールをロードするコマンドを入れます。 例 2 を参照してください。
ホスト アプリケーションに対して特定のカスタマイズを行う場合は、そのホスト アプリケーションに固有のプロファイルにすべてのカスタマイズ コードを記述します。 たとえば、PowerShell コンソールのフォントの背景色を変更して見やすくしたり、ISE の Add-ons であるモジュールをロードしたりします。 PowerShell コンソールの例 1 と PowerShell ISE の例 3 で説明しました。
多くのユーザー用に PowerShell をカスタマイズする必要があり、管理者である場合は、次のヒントに従います。AllUsersAllHosts プロファイルは最も広い範囲であるためです。
How To Run Console Or ISE Without Profiles Loaded
Open the run dialog Win + R and open PowerShell with the -NoProfile option.
PowerShell.exe -NoProfile
Warning.Of.The Powershell for the PowerShell for the PowerShell in the World: PowerShell Load Time
プロファイルが大きく複雑になると、PowerShell を開く速度に影響を及ぼし始めることがあります。 PowerShell のロード時間が短い原因がプロファイルにあるかどうかをトラブルシューティングするには、実行ダイアログ Win + R を開き、-NoProfile オプションを指定して PowerShell を開きます。
PowerShell.exe -NoProfile
Profiles And Remote Sessions
PowerShellプロファイルはリモート セッションでは自動的に実行しないため、プロファイルが追加するコマンドはリモート セッションに存在しません。
セッションでプロファイルを実行するには、Invoke-Command CmdLet.
たとえば、次のコマンドは $s のセッションでローカル コンピューターから “Current user, Current Host” というプロファイルを実行します。
Invoke-Command -Session $s -FilePath $PROFILE
PowerShell モジュールとプロファイルで独自の PowerShell CmdLets を整理する方法
PowerShell プロファイル、モジュール、CmdLet 間のリンクを理解するために、私は、多くの CmdLets をモジュールの束に整理した Efficiency Booster PowerShell プロジェクトを作成し、Windows PowerShell コンソールまたは ISE を起動すると PowerShell セッションでそのプロファイルとともにロードされるようにしています。
プロジェクトのコードを含む zip ファイルをダウンロードして、簡単に追従できるようにしてください。 ReadMe.txt ファイルには、インストールとカスタマイズの手順の説明がありますので、そのファイルの説明をお読みください。 なお、インストールとカスタマイズの手順については、以下の記事 How To Install And Configure PowerShell をお読みください。 CmdLets、モジュール、プロファイル。
Powershell プロファイル、モジュール、および CmdLet の間のリンクを説明するために、書店、本棚、書籍のアナロジーを使用します。
書店に入ると、アート、ビジネス、コンピューター、文学、旅行など、書籍部門のさまざまなラベルが貼られた多くの棚があります。
PowerShellの世界に戻って、このアナロジーの話をPowerShellと結びつけてみましょう:
- PowerShellに付属するCmdLet、または自分で書いたCmdLetが本です。
- PowerShell モジュールは、例えばコンピュータ書店の棚のように、私たちの本が置かれている書店の棚です。
- 最後に、PowerShell プロファイルは書店そのものです。
Windows PowerShell コンソールまたは ISE を開くたびにセッションを開き、そのセッションでプロファイル ファイルを読み込んでカスタマイズし、PowerShell 環境を思い通りにセットアップするのです。 プロファイル ファイルはモジュールをインポートし、モジュールはそのモジュールに属する各 CmdLet スクリプトをロードします。
Windows PowerShell コンソールと ISE ホスト アプリケーションの両方で独自の CmdLets を使用したいので、$profile.CmdLets を作成することを好んでいます。CurrentUserAllHosts プロファイル タイプを作成します。これは、次の場所に作成される Profile.ps1 ファイルにすぎません:
- $Home DocumentsWindowsPowerShell フォルダー (PowerShell version 5.1 and older)
- $Home Documents Powersford Pholder (PowerShell version 6.1 for).
$Home DocumentsPowerShell フォルダー (PowerShell version 6.0)
How We Link Together PowerShell Profile, Module, And CmdLet
PowerShell で行われるその構造を簡単に説明します
- Create a PowerShell profile
- Create a Module folder and file structure
- Customize profile to import necessary module
- CmdLet PowerShellスクリプトを作成する
- 独自のCmdLet関数コードを書く
- CmdLetスクリプトをインポートするためにモジュールファイルをカスタマイズする
このプロセスは、効率ブースターPowerShellプロジェクトで、プロファイルの例を示して説明することにします。 モジュール、CmdLetsの全体像を理解しやすくするために、誰でも簡単に理解できるようにしました。
PowerShell プロファイル、モジュール、CmdLet を作成し、それらをリンクするには、以下の手順に従ってください。
Step 1: Windows PowerShell コンソールを開く
Step 2: 最初に、PowerShell インストールにプロファイルが存在するかどうかテストしてみます。 Window PowerShellで次のコマンドを入力し、ENTER
Test-Path $PROFILE.CurrentUserAllHosts
ステップ3:前のコマンドの結果が偽の場合、プロファイルが存在しないのでステップ4へ進みます。 ステップ4: プロファイルが存在しないので、次のコマンドを入力してENTERを押すと、プロファイルが作成されます。
ise $PROFILE.CurrentUserAllHosts
Step 6: PowerShell ISEでプロファイルファイルが開かれました。
Step 7: ここで、モジュールフォルダ構造と必要なファイルを作成する必要があります。
Step 8: Profileファイルを作成したフォルダに、Modulesという名前でモジュールフォルダを作成します。
Step 9: Modules folderに、必要なモジュールごとにフォルダを作成します。 例えば、Efficiency Booster PowerShell Projectで以下のモジュールを作成しました。
Step10: 各モジュールフォルダに、拡張子.psm1、モジュールフォルダと全く同じ名前のファイルを作成します。 たとえば、03common フォルダに 03common.psm1 ファイル
Step 11: オプションとして、マニフェスト ファイル (.psm1)を作成することができます。
Step 12: 同じモジュール フォルダに、独自の CmdLet のコードを記述する .ps1 拡張子のファイル (通常の PowerShell スクリプト ファイル) を作成します。 たとえば、独自の Get-CPUInfo CmdLet のコードを記述する GetCPUInfo.ps1 ファイルを作成できます。
Step 13: これで、独自の CmdLet コードとそれをスクリプト化する準備が整いました。 Get-CPUInfo や Efficiency Booster PowerShell Project の他の CmdLets の例を自由にご覧ください。 今後の記事で、プロジェクトの各 CmdLet についてより詳しく書く予定です。
Step 14: CmdLet スクリプトを正しい PowerShell モジュールにリンクする。 モジュールの.psm1ファイルを開き、次のコード行を記述します:
. 例えば、Get-CPUInfo CmdLetの場合、次のコード行を03common.File.ps1(CmdLetスクリプトファイル)に記述します。psm1 file:
. $psScriptRoot\GetCPUInfo.ps1
Step 15: Profile script file で、CmdLet script file を含むモジュールを import するので Profile file でこのコマンドを記述してください。
Import-Module ModuleName
例えば、Get-CPUInfo CmdLet は 03common モジュールに含まれているので、プロファイルに次のコードを記述します。
Import-Module 03common
Step 16: モジュールやCmdLetがプロファイルに存在していて起動時のPowerShellセッションごとにロードしたい場合はすべてステップ9~15を繰り返し実行します。
Step 17: 特定のホストを開いたときに、インポートされたすべてのモジュールがロードされることをテストします。
Get-Module -ListAvailable
Step 18: モジュールのロードをテストします。 各モジュール内のすべての CmdLets が環境にロードされることをテストできます。 以下は、便利なコマンド例です:
Get-Command -Module 02utils