2009/10/04

リモート(ローカルでもいいですが)のPSSessionに入る(ファンインする)ためには、まずNew-PSSessionでPSSessionを作成し、Enter-PSSessionでそのセッションに入ります。面倒なので関数化してみました。

function Enter-ServerSession()
{
	$encryptedString="中略"
	$credential = New-Object System.Management.Automation.PSCredential "ユーザー名@ドメイン名",(ConvertTo-SecureString $encryptedString)
	$session = New-PSSession サーバー名 -Credential $credential
	Enter-PSSession $session
}

ここで、パスワードを毎回入力するのは面倒なので、関数の中に暗号化したものを直書きしてしまいます(もちろん、見てはいけない人に見られないところに関数を保存してくださいね)。

$encryptedStringにはパスワードの暗号化文字列を入れます。この文字列の取得方法は、

PS C:\> ConvertFrom-SecureString (Get-Credential).Password

と入力すると認証ダイアログが出るので、そこにユーザー名とパスワードを入れると、パスワードが暗号化された文字列を得ることができます。

なお、もちろん、PSSessionを張るサーバーへの認証が必要ない場合は、-Credentialの指定は要らないです。

元記事:http://blogs.wankuma.com/mutaguchi/archive/2009/10/04/181825.aspx

2009/06/30

Windows Server 2008 R2ではPowerShell v2が標準機能ですが、v2の目玉の一つとしてリモートでサーバーのPSを実行できる機能があります。

詳しくは、7/4の大阪のセッションでデモを交えてお話しできると思いますが、http://technet.microsoft.com/ja-jp/magazine/2008.08.windowspowershell.aspxを読んで予習しておくのもいいかと思います。

なお、この記事が書かれたときの最新バージョンのCTP2から変更点があり、コマンドレット名が若干変わっています。

New-RunSpace→New-PSSession

push-runspace→Enter-PSSession

pop-runspace→Exit-PSSession

さて、PSRemotingはWinRM2.0を用いたリモート通信なのですが、WinRM2.0は認証にKerberos認証を用います。Active Directoryにログオンしたクライアントから

New-PSSession ServerName

のようにすると、ログオン時の認証情報が用いられ、認証され、通信が始まります。しかし、ログオン時とは異なる認証情報を送る必要がある場合もあるので、そのときは-credentialパラメータを使います。

New-PSSession ServerName -credential (Get-Credential)

のようにすると、認証ダイアログが表示されるので、ユーザー名とパスワードを入れて認証情報を送りログオンすることができます。

元記事:http://blogs.wankuma.com/mutaguchi/archive/2009/06/30/176828.aspx


Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー

Twitter

Books