0

Powershell に関するアドバイスが必要です。

アプリケーションの MSP 更新ファイルを複数の Win08r2 サーバーにインストールする必要があります。これらのコマンドをターゲット マシンの PS ウィンドウ内でローカルに実行すると、まさに私がやりたいことを実行します。

$command = 'msiexec.exe /p "c:\test\My Application Update 01.msp" REBOOTPROMPT=S /qb!'
invoke-wmimethod -path win32_process -name create -argumentlist $command

実行中のファイルがターゲット マシン上にある

マシンにリモートで接続して 2 つのコマンドを実行すると、2 つの x64 msiexec.exe プロセスと 1 つの msiexec.exe *32 プロセスが開き、そのまま待機します。

サーバーを再起動しても、アップデートがインストールされたことが表示されないので、タイミングの問題ではないと思います。

2行でPS1ファイルを作成してリモートで実行しようとしましたが、同じことをしているようです。

私の MSP アップデートをリモートでインストールする方法について誰かアドバイスがあれば、私は耳を傾けます。

記載している内容は全て記載していると思いますが、不足があれば質問してください。

++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++

これに対する私のプロセスは次のとおりです。

  • サーバー名と管理者パスワードの CSV を読み取る
  • パスワードを使用して資格情報を作成する
  • マシン名と資格情報を使用して新しいセッションを作成します
  • 更新 MSP ファイルを保持する一時フォルダーを作成する
  • 更新ファイルをターゲット サーバーにダウンロードする PS1 ファイルを呼び出す
  • >>> 新しい System.Net.WebClient オブジェクトを作成します
  • >>> その Web クライアント オブジェクトを使用して、ソースからターゲット サーバー上の場所にダウンロードします
  • ダウンロードしたばかりのパッチを適用する別の PS1 ファイルを呼び出す –>> ここで問題が発生します。
  • >>> 上記の変数を設定します
  • >>> 変数で指定したファイルを実行
  • ターゲット サーバーへのセッションを閉じる
  • CSV 内の次のサーバーに移動…</li>

PS ウィンドウを開いて変数を手動で設定し、それを実行すると (上記の 2 行のコードのように)、正常に動作します。同じ 2 行のコードを含む PS1 ファイルをターゲット サーバーに作成すると、右クリック > [PowerShell で実行] をクリックすると、期待どおりに動作します。PowerGUI でコードをリモートで実行すると、次のようなテキスト ブロックが返され、そこに留まります。サーバーに RDP 接続すると、インストーラーが起動しません。「戻り値」の値についての私の理解では、「0」はコマンドが成功したことを意味します。

PSComputerName : xx.xx.xx.xx
RunspaceId : bf6f4a39-2338-4996-b75b-bjf5ef01ecaa
PSShowComputerName : True
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS : __DYNASTY
: __PARAMETERS __REL
: __PROPERTY_COUNT SER
2 __ パス : __
パス名 : { : 4808 戻り値: 0




変数と、デスクトップにテキスト ファイルを作成する実行との間にコード行を追加して、「executeFile」ファイルにアクセスし、そのテキスト ファイルが作成されることを確認しました。私のMSPをリモートで実行しているだけではないようです。

よろしくお願いいたします。

Catt11.

4

2 に答える 2

0

MSP パッケージに Start-Process を使用することはお勧めできません。一部の更新パッケージは powershell ライブラリをロックダウンするため、WMI 呼び出しを使用する必要があるためです。

于 2014-08-20T18:36:24.317 に答える