none
Invoke-Expression と Invoke-Command の違い RRS feed

  • 質問

  • Windows7 を使っています。

    Invoke-Expression と、Invoke-Command は、どういう使い分けをする

    コマンドレットなのでしょうか?

     

    SQL Server の bcp コマンドユーティリティ、および msiexec コマンドの

    代用となるコマンドレットがないようなので、Invoke-Expression もしくは

    Invoke-Command コマンドレットを使って呼び出すことを検討しています。

     

    基本的には、ローカルホスト上での実行となるため、-ComputerName は

    使用しません。私がやりたいことは、どちらのコマンドレットでも実現可能な

    気はしますが…何がどう違うのか、少し気になったので質問させていただきました。

     

    以下、余談(別件?)ですが…

    もし可能なら、外部コマンドを呼び出すようなことはしたくないので、bcp や msiexec の

    機能をもったコマンドレット (sqlcmd コマンドに対する Invoke-Sqlcmd のような) が

    あるようでしたら、教えてください。

     

    ちなみに、Invoke-Sqlcmd コマンドレットは、sqlcmd コマンドとは完全に別物(内部で

    呼び出しているわけではない)ということは理解しているつもりです。

    2010年8月25日 13:48

回答

  • 以下は、個人的な使い分け例です。

    Invoke-Command:セッションを作ってリモートマシンでの実行やバックグラウンド実行をしたいとき
    Invoke-Expression:動的にコマンドを作成して実行したいとき。

    bcp,msiexexに相当するコマンドレットは、調べみたのですが、残念ながら、有効な情報を見つけることができませんでした。

     

    2010年8月26日 7:05

すべての返信

  • 以下は、個人的な使い分け例です。

    Invoke-Command:セッションを作ってリモートマシンでの実行やバックグラウンド実行をしたいとき
    Invoke-Expression:動的にコマンドを作成して実行したいとき。

    bcp,msiexexに相当するコマンドレットは、調べみたのですが、残念ながら、有効な情報を見つけることができませんでした。

     

    2010年8月26日 7:05
  • Chuki さん、いつもコメントありがとうございます。

    実行したいコマンドは、実行直前に決まります。動的といえば動的ですし、静的と言えなくもない(笑)

    ただ、バックグラウンド実行は魅力です。bcp や msiexec は、できればバックグラウンド実行で

    済ませたいです。特に、同期をとるものもありませんし。

    ひとまず、Invoke-Command を使う方向で検討してみます。

     

     

    2010年8月26日 12:31