悪意のある更新プログラムの状態を示すノードに展開されるPowershellスクリプトを作成して、単純なタスクの一部を自動化し、就業日。 PowerShellスクリプトは、PSのプロンプトが上がった状態で実行すると完全に動作します。同じスクリプトがSCCMを介してテストマシンにデプロイされた場合、1つの例外があります:SFC.EXE /SCANNOW
は呼び出されません。私が使用して試したSCCM経由で展開されたPowershellスクリプトからSFC.EXEを実行
:再び
Start-Process -FilePath "${env:Windir}\System32\SFC.EXE" -ArgumentList '/scannow' -Wait -NoNewWindow
Start-Process -FilePath "sfc.exe" -ArgumentList '/scannow' -Wait -NoNewWindow
Start-Process -FilePath "${env:Windir}\System32\SFC.EXE" -ArgumentList '/scannow' -RedirectStandardOutput "C:\SFC-Out.log" -RedirectStandardError "C:\SFC-Err.log" -Wait -NoNewWindow
& "sfc.exe" "/scannow"
Invoke-Command -ScriptBlock { sfc.exe /scannow }
、これらの例のすべてが上昇PSプロンプトから実行したときに意図したとおりに動作しますが、展開PowerShellスクリプトから実行するときに失敗します。私は-RedirectStandardOutputを使用した場合、私は、ファイルのSFC-Out.logをチェックし、それを読む:
私はSCCMは中のプログラム/スクリプトを実行されるため、これがあると思い
「Windowsリソース保護は、修理サービスを開始できませんでした」ユーザーコンテキスト(または昇格したユーザーコンテキストではなく、SYSTEMが昇格されたセッションよりも高いと想定されます)の代わりにSYSTEMコンテキストを使用します。
これを行う方法はありますか?申し訳ありませんが、フォーマットが間違っています。これはこのサイトの最初の投稿です。
'ProcessStartInfo.Verb'を' RunAs'に設定しようとします。このオプションを使用して、管理者権限でプロセスを実行できます。残念ながら、 'Verb'と' RedirectStandardOutput'を一緒に使うことはできません。[see](https://stackoverflow.com/a/3596354) –
それでは、資格証明を求めるウィンドウがポップアップしないでしょうか?私は 'RedirectStandardOutput'を使わないことでOKですが、' SFC'がなぜ起動していないのかを調べるのはトラブルシューティングのステップでした。 –
信任状を 'ProcessStartInfo.Password'と' ProcessStartInfo.UserName'に設定することができるので、信用証明書を要求しませんが、管理者権限で開始プロセスを確認するよう求められます。確認なしにプロセスを管理者として実行したい場合は、UACの権限を下げることができます –