プロファイルの存在を確認する
PowerShellでは、プロファイルというファイルを編集することで独自のエイリアスやコマンドレットを作成することができる。
下記コマンドでプロファイルの存在を確認する。
> Test-Path $profile
False
Falseの場合は存在しないため、プロファイルを作成する。
> New-Item -path $profile -type file -force
ディレクトリ: C:\Users\*****\Documents\WindowsPowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/12/14 10:26 0 Microsoft.PowerShell_profile.ps1
エイリアスを作成する
Set-Alias
コマンドレットでエイリアスを作成する。
# Sublime Textを起動
Set-Alias st "C:\Program Files\Sublime Text 3\sublime_text.exe"
オプションやコマンドライン引数を利用したい場合は関数として宣言する。
function pikotaro() {
Write-Host ("This is " + $args[0])
}
コマンドライン引数は$args
で受け取ることができるが、
下記のようにparam()
を使用することで変数名を割り当てることができる。
function pikotaro() {
param ($word1,$word2)
Write-Host ("This is " + $word1 + "-" + $word2)
}
$args
で引数を受け取る場合、実行時の引数の順番が固定されてしまうが、
変数名を使用すると、オプションに指定することで引数の入力順を入れ替えることができる。
# オプションなしの場合$word1 $word2の順で引数を渡す
> pikotaro apple pen
This is apple-pen
# オプションを使用すると指定した変数に引数を渡せる
> pikotaro -word2 pen -word1 apple
This is apple-pen
プロファイルを読み込む
PowerShellを再起動するか、下記コマンドレットを実行することでプロファイルが反映される。
> . $profile
コマンドレットの実行時にこのシステムではスクリプトの実行が無効になっているため~
のような
エラーが出る場合は、Windowsの設定でPowerShellスクリプトの実行ポリシーが許可されていないため
下記コマンドレットで実行ポリシーを変更する必要がある。
(RemoteSigned: ローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可能)
> Set-ExecutionPolicy RemoteSigned
日本語が文字化けする場合
日本語を含むパスなどを入力すると文字化けすることがあるが、
Microsoft.PowerShell_profile.ps1
の文字コードをBOMつきのUTF-8で保存すると解消される。