実際のプロファイルでの設定方法など
プロファイルでは、比較的よく使う定数などを変数にあらかじめ設定しておきたいことがある。このような場合、以下のように記述する。
remove-variable -ErrorAction SilentlyContinue -Force -Name <変数名>
Set-Variable -Option ReadOnly -Name <変数名> -Description '<変数の説明>' -Value <値>
最初のremove-variableは、ドットソースでの読み込みを考慮したもの。ReadOnlyに設定した変数を再度設定しようとするとエラーになるので、先に削除しておく。未定義のときremove-variableがエラーになるが、「-ErrorAction SilentlyContinue」オプションが指定してあるため、エラーメッセージを表示せずに実行が継続する。
プロンプト文字列を変更したいという用途もある。この場合、Prompt関数を記述する。注意点は、関数なので必ず何かを返すようにする。PowerShellはPrompt関数の戻り値が$nullだと、組み込みの文字列「PS>」を出力する。
function prompt()
{
write-host -NoNewline -ForegroundColor Green -BackgroundColor Red "PS>";
" ";
}
上のリストでは、Write-Hostでプロンプトを色付きで表示させている。しかし、Write-Hostはコンソールに直接書き込み、値を返さないので、最後の「" ";」でプロンプトの最後にスペースを出力させている。
プロファイルをWindows PowerShellとPowerShellで共有したいとき、以下の方法でそれぞれを区別できる。
if($PSVersionTable.PSVersion.Major -eq 5) {
"Windows PowerShell";
} else {
"PowerShell";
}
PowerShellが起動されたときのオプションを得るには、以下のようにして、自分のプロセスIDを探し、コマンドラインを得る。PowerShellの実行コマンドパス(スペースやハイフンなどが含まれる可能性がある)を""に置換したのち、スペースを区切り文字として分割(split演算子)する。
$myProcess= Get-CimInstance Win32_Process -Filter "ProcessID = $PID";
$myArg=($myProcess.CommandLine -replace ($myProcess.Path -replace "\\","\\"),"") -split " " ;
PowerShellでは、関数の一覧は「Get-ChildItem -path function:」でできるが、面倒なので短い名前の関数を作っておく。筆者は、BASICから使い始めたので「LIST」という名前にしている。LISTは引数無しで、ユーザー登録関数の一覧を、関数名をつけるとその定義を表示する。
function LIST(){
param($fname)
if ($fname -eq $null) {
Get-ChildItem -path function: | Where-Object { $_.Source -eq '' -and $_.Name -notlike '[A-Z]:'}
} else {
$x=Get-Item ("function:"+$fname)
"Parameters"
$x.Parametersets.Parameters | select Position,Name,ParameterType,IsMandatory
"`nOptions"
$x.Options
"`n"+$x.CommandType+" "+$fname+"() { $($x.Definition) }"
}
}
なお、コンソールの背景色は、コンソールプログラム(conhost.exeやWindows Terminal)側で設定する。また、デフォルトの文字色に関してはPSReadLineで色分けを管理しているので、PSReadLine側で設定する。こちらについては別途記事にしたい。
PowerShellのプロファイルを使うことで、よく使うオブジェクトなどをあらかじめ変数に定義しておける。なお、関数や変数の定義はできるだけ最低限にして、絶対に忘れないような名前にしておく。
プロファイルは、起動時に読み込まれるため、長ければ長いほど起動時間がかかる。使いもしない関数の定義に毎回時間を取られるのは無駄である。
この連載の記事
-
第431回
PC
Windows上でユニコードを「見る」方法 -
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第429回
PC
WindowsからWordPadが廃止! RTF(Rich Text Format)はどうなる? -
第428回
PC
Google/Bingで使える検索オプション -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 - この連載の一覧へ