Operations Lab.

Archive for 8月 2014

ssh っぽく PowerShell Remoting する

leave a comment »

PowerShell でリモートサーバのシェルを取得する場合、Enter-PSSession するか、New-PSSession した後に Enter するかだと思いますが、毎回 Credential を取得してセッションを生成する(コマンドを入力する)のが面倒になってきたので、最低限の入力でつながるようにしてみました。

function psh {
    [CmdletBinding(SupportsShouldProcess = $false, SupportsPaging = $false, SupportsTransactions = $false, PositionalBinding = $true)]
    param(
        [Parameter(ValueFromPipeline = $false, Mandatory = $true)]
        [ValidateNotNull()]
        [string]$RemoteHost,

        [Parameter(ValueFromPipeline = $false, Mandatory = $false)]
        [switch]$Persist
    )

    $cred = Get-Credential -ErrorAction Stop
    if($Persist) {
        $session = New-PSSession -ComputerName $RemoteHost -Credential $cred -ErrorAction Stop
        Enter-PSSession $session
    } else {
        Enter-PSSession -ComputerName $RemoteHost -Credential $cred
    }
}

使い方

psh [-RemoteHost] <RemoteHostName> [-Persist]

必要なものは <RemoteHostName> 接続先のホスト名のみです。-Persist スイッチを付けると、セッションを永続化します。

個人的には、リモートホストに対して localhost\Administrator でログオンする事がほとんどなので、Credential のアカウント初期値も指定してあげた方が、よりタイプ数を減らせると思いつつも、思い付きで書いたので一旦この辺で。

広告

Written by kazu

2014/08/11 at 22:41