function SetAlias { Param( [Parameter(Mandatory = $true, Position = 0)] [string]$Alias, [Parameter(Mandatory = $true, Position = 1)] [string[]]$Command ) foreach ($cmd in $Command) { # 空白を含んでいたら関数として定義 if ($Command -match "\s") { $func = "function global:$Alias { $Command }" Invoke-Expression $func return } # それ以外はAlias else { # コマンドが存在するかどうかチェック if (Get-Command $cmd -ea SilentlyContinue) { Set-Alias -Name: $Alias -Value: $cmd -Scope: Global break } } } }
PowerShellでは、空白を含むAliasを登録できないので、オプションまで含めてAliasにしたいときは、functionとして登録する必要があります。
また、Alias登録時に対象のコマンドが存在しないと困るので、そのチェックも入れています。
それだけでした。