2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerShellで独自のコマンドレットを作成する

Last updated at Posted at 2021-12-18

プロファイルの存在を確認する

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コマンドレットでエイリアスを作成する。

Microsoft.PowerShell_profile.ps1
# Sublime Textを起動
Set-Alias st "C:\Program Files\Sublime Text 3\sublime_text.exe"

オプションやコマンドライン引数を利用したい場合は関数として宣言する。

Microsoft.PowerShell_profile.ps1
function pikotaro() {
    Write-Host ("This is " + $args[0])
}

コマンドライン引数は$argsで受け取ることができるが、
下記のようにparam()を使用することで変数名を割り当てることができる。

Microsoft.PowerShell_profile.ps1
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で保存すると解消される。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?