達成したいこと: スケジュールされたタスクを介して wim ファイルのバッチを更新したいと考えています。そのため、wims をマウントし、更新パッケージを追加して、wims をマウント解除します。これまでのところ、Windowsserver 2012r2 の PoSh4 に含まれる dism-module を介して問題は発生していません。
問題:
これは、Windows 10 の wim ファイルでは機能しません。これは、モジュールを介して使用される dism-version が、wim-image の必要なバージョン (10.x) よりも低い (6.3.x) ためです。
私が試したこと:
1) 経由で在庫の dism-module を削除し、経由で dism-moduleremove-module dism
をインポートしますImport-Module 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM'
。実行Get-WindowsEdition -Online -verbose
しても dism バージョン 6.3.x が配信される
2)または および を介してC:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\dism.exe
スクリプトで使用します。最初の試行では、dism は適用しようとした引数を取得しませんでした。2 回目の試行では、dism はコマンドとして認識されません。$env:path
-f
&
私が見落とした何かがあるはずですが、それを理解することはできません。
コードはどのように見える必要がありますか? Args は次のようになります。
$mountpath = 'd:\autoupdating'
$package = 'D:\updates\whatever.cab'
$dismcommands = "/image:$mountpath /add-package /packagepath:$package
解決:
PoSh や DISM は、思い通りになると大きな問題を抱えて$dismcommands
います。DISM は、文字列を使用可能なコマンドとして認識しません。問題なく動作するものを使用することで、これを簡単にバイパスできます
DISM.exe "/image:$mountpath /add-package /packagepath:$package"
。$env:Path
さらに、変数を targetに変更する必要がありますC:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM\
。$env:Path
これは、WIN10.wim での作業が終了した後で、バックアップ、リセット、および復元することで行いました。