Windows ServerのReomote Desktop Serviceを構築するために、Windows10を一般化しようとしたら、”Sysprep で Windows のインストールを検証できませんでした。” というエラーが出てしまいました。。。
前回はそんなことなかったのに。。。
##エラーの原因は?
どうやら2015年11月のアップデート(1511)からネットに接続しているとストアアプリが勝手にインストールされるようになったらしい。
そして、そのストアアプリがsysprepを実行する妨げになって、前述のエラーになってしまう。
##エラーの回避方法は?
検索すると何通りか対処方法がヒットするのですが
勝手にインストールされたストアアプリを削除するのが他の方法と比べると楽そうです。
##勝手にインストールされたストアアプリをどうやって削除する?
検索すると削除の方法も何通りかヒットします。
- インストールされているアプリの一覧を検索して削除していく
- PowerShellのスクリプトで削除していく
などがあるのですが、ストアアプリはユーザーごとにインストールされてしまうので、ユーザーが複数存在した場合などはユーザーごとに実行しなければならなかったり、そのアプリはコアアプリなので削除できませんとかなったり、ポリシー変更する必要があったりと結構面倒くさいなあと思って、さらに検索キーワードを変えてみて検索。
アプリを検索するコマンド(Get-AppxPackage)と削除するコマンド(Remove-AppxPackag)には、-AllUsersパラメタがあって、ユーザーごとに削除する必要がないこと、アプリのパッケージ名にはワイルドキャラクターが使用できることがわかりました。
結局、sysprepを実行してみて、エラーログを見て、パッケージ名をコピペして、アプリを削除することにしました。
##実際にやった手順
- sysprepを実行
- エラーになったらエラーログを見る
ログは、「C:\Windows\System32\Sysprep\Panther」 フォルダーの***「setuperr.log」*** を見ます。
エラーダイアログには***「setupact.log」*** とありますが、エラーの内容だけを見たいので、「setuperr.log」 を見ます。 - ***「setuperr.log」に下記のような行があるので、そこからパッケージ名をコピーします。
下記の例では、「Microsoft.MicrosoftStickyNotes_1.1.24.0_x64__8wekyb3d8bbwe」***がパッケージ名です。
***「_」の前まで、この例では、「Microsoft.MicrosoftStickyNotes」***をコピーします。
SYSPRP Package Microsoft.MicrosoftStickyNotes_1.1.24.0_x64__8wekyb3d8bbwe was installed for a user,
but not provisioned for all users.
This package will not function properly in the sysprep image.
4.Windows PowerShellの管理者モードで、下記を実行する。
この例では、「Microsoft.MicrosoftStickyNotes」が先程コピーしたパッケージ名です。
このパッケージ名をワイルドキャラクタ指定するためにアスタリスクを付加しています。
Get-AppxPackage -AllUsers Microsoft.MicrosoftStickyNotes* | Remove-AppxPackage -AllUsers
5.再度、sysprepを実行する。エラーになったら、上記2~4を繰り返します。
##まとめ
上記の方法で、少ないときは3回くらい、多いときで7回くらいで、sysprepを実行できました。