• 11/30/2017
  • 7分で読める
    • S
    • s
    • x
    • q
  • 概要

    PowerShellプロファイルの作成と使用方法について説明しています。

    Long Description

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

    PowerShell はユーザーおよびホスト プログラム用にいくつかのプロファイルをサポートしています。 しかし、PowerShell はプロファイルを作成しません。

    PowerShellコンソール(PowerShell.exe)のNoProfileパラメータを使用して、プロファイルを作成せずにPowerShellを起動する方法について説明します。

    プロファイルファイル

    PowerShellは、いくつかのプロファイルファイルをサポートしています。 また、PowerShell ホスト プログラムは、独自のホスト固有のプロファイルをサポートできます。

    たとえば、PowerShell コンソールは、次の基本プロファイル ファイルをサポートします。 プロファイルは優先順位の高い順に表示されます。

    $PSHOME_Profile.ps2

    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

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

    • The $PSHOME variable, which stores the installation directory for PowerShell
    • The $Home variable, which stores the current user’s home directory

    さらに、PowerShell をホストする他のプログラムでは独自のプロファイルをサポートできるようになりました。 たとえば、Visual Studio Code は次のホスト固有のプロファイルをサポートします。

    Description Path

    Description Path

    Current user, Current Host
    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で使用できるようになります。

関連項目

自動変数について

関数について

プロンプトについて

実行ポリシーについて

署名について

リモートについて

スコープについて

実行ポリシー設定

コメントを残す

メールアドレスが公開されることはありません。