PowerShellでAliasを設定するときの便利関数

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登録時に対象のコマンドが存在しないと困るので、そのチェックも入れています。

それだけでした。