SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PowerShell 2.0の新機能

PowerShell 2.0の新機能(2)
――リモート処理編

PowerShell 2.0のリモート処理

複数のセッションを作成する

 今度は1度に複数のセッションを作成してみましょう。複数のセッションを作成する場合もNew-PSSessionを使用します。-ComputerNameパラメータの後ろに、セッションを作成するリモートコンピューターをカンマで区切って指定します。

 例えば、次のコマンドはHIRO-MACPCとHIRO-WIN7というコンピューターにセッションを作成します(図10)。

$pss = New-PSSession -ComputerName HIRO-MACPC, HIRO-WIN7
図10 セッションの作成
図10 セッションの作成

 ここで作成したセッション$pssにはHIRO-MACPCとHIRO-WIN7の2つのセッションが格納されます。

 先ほど紹介したInvoke-Commandコマンドレットでこの$pssセッションを使用すると、一度に複数のリモートコンピューターに対してコマンドを実行します。たとえば

Invoke-Command -Session $pss -ScriptBlock {Get-ChildItem C:\}

とすると、HIRO-MACPCとHIRO-WIN7の両方に対してGet-ChildItemコマンドレットを実行することになります。結果として、両方のリモートコンピューターの「C:\」のファイルリストが表示されます(図11)。

図11 Invoke-Commandコマンドレットの実行
図11 Invoke-Commandコマンドレットの実行

 Get-ChildItemコマンドレットの場合は、一番右端にどのコンピューターであるかを示すPSComputerName列が表示されます。$pssには複数のセッションが入っていますが、これを別々に分けて使用することもできます。実際には$pssは複数のセッションがまとめられているだけであり、Get-PSSessionコマンドレットで個々のセッション情報を確認できます(図12)。

図12 セッションの確認
図12 セッションの確認

 例えば、$pssに格納されているHIRO-MACPCのセッションはセッションIDが2なので

$ps2 = Get-PSSession -Id 2

のようにしてセッションを取得し、

Invoke-Command -Session $ps2 -ScriptBlock {Get-ChildItem C:\}

のようにすることで、HIRO-MACPCに対するセッションでコマンドを実行することができます。

-ComputerNameパラメータを持つコマンドレット

 ここまではセッションを使用したリモートコンピューターの操作について説明してきました。PowerShell 2.0ではセッションを作成しなくても、リモートコンピューター操作できるコマンドレットがあります。それは-ComputerNameというパラメータを持つコマンドレットです。

 -ComputerNameパラメータを持つコマンドレットには以下のようなものがあります。

表1 ComputerNameパラメータを持つコマンドレット一覧
Clear-EventLog Connect-WSMan Disconnect-WSMan Enter-PSSession Get-Counter
Get-EventLog Get-HotFix Get-Process Get-PSSession Get-Service
Get-WinEvent Get-WmiObject Get-WSManInstance Invoke-Command Invoke-WmiMethod
Invoke-WSManAction Limit-EventLog New-EventLog New-PSSession New-WSManInstance
Receive-Job Register-WmiEvent Remove-EventLog Remove-PSSession Remove-WmiObject
Remove-WSManInstance Restart-Computer Set-Service Set-WmiInstance Set-WSManInstance
Show-EventLog Stop-Computer Test-Connection Test-WSMan Write-EventLog

 これらのコマンドレットについては解説しませんので、興味がある方はGet-Helpコマンドレットで調べてみてください。

まとめ

 PowerShellにおけるリモート処理は、最初の設定さえしてしまえば何も難しいものではありません。しかし、リモート処理用に構成することは、相手を操作する/相手から操作されることを意味しますので、運用する際は十分に気をつけてください。

 今回の記事を参考に、業務に生かしていただければ幸いです。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
PowerShell 2.0の新機能連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4709 2010/01/14 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー