PowerShellのバックグラウンドジョブ [PowerShell]
unix系のシェルだと & (ampersand) で簡単に作れるバックグラウンドジョブですが、
PowerShell v1 ではそれに相当する機能はありません(よね?)
v2 からは実現可能になっています。CTP2 では runspace、CTP3 では PSSession を用いて、こんな感じで書けます。
さらにこの方法には CTP2 から CTP3 になって、できるようになるかと思っていたけどまだそのままの制限があります。
バックグラウンドジョブを実行しているセッションの中からはたとえば
Enter-PSSessionn の二段重ねが出来ないのも同じ理由かもしれません。
認証とか権限とかの問題のような気がするので、クレデンシャルをうまく渡すとかhttpsでつなぐとかすればどうにかなるのかもしれませんが、winrm 周りの設定が複雑でよくわかりません。(^_^;
どうにかならないものですかねえ。。。
というフィードバックをしようと思いつつ英語で書くのが面倒で・・・
PowerShell v1 ではそれに相当する機能はありません(よね?)
v2 からは実現可能になっています。CTP2 では runspace、CTP3 では PSSession を用いて、こんな感じで書けます。
$session01 = New-PSSession -ComputerName $ComputerNameなんだか面倒ですよね。なぜなんでしょう。
$job = Invoke-Command `
-AsJob -ScriptBlock $blockTest01 `
-Session $session01
さらにこの方法には CTP2 から CTP3 になって、できるようになるかと思っていたけどまだそのままの制限があります。
バックグラウンドジョブを実行しているセッションの中からはたとえば
Get-WmiObject -Class Win32_BIOS -ComputerName $OtherComputerのように他のコンピュータにアクセスができないのです。
Enter-PSSessionn の二段重ねが出来ないのも同じ理由かもしれません。
認証とか権限とかの問題のような気がするので、クレデンシャルをうまく渡すとかhttpsでつなぐとかすればどうにかなるのかもしれませんが、winrm 周りの設定が複雑でよくわかりません。(^_^;
どうにかならないものですかねえ。。。
というフィードバックをしようと思いつつ英語で書くのが面倒で・・・
タグ:powershell
コメント 0