2017-07-06 24 views
2

悪意のある更新プログラムの状態を示すノードに展開される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コンテキストを使用します。

これを行う方法はありますか?申し訳ありませんが、フォーマットが間違っています。これはこのサイトの最初の投稿です。

+0

'ProcessStartInfo.Verb'を' RunAs'に設定しようとします。このオプションを使用して、管理者権限でプロセスを実行できます。残念ながら、 'Verb'と' RedirectStandardOutput'を一緒に使うことはできません。[see](https://stackoverflow.com/a/3596354) –

+0

それでは、資格証明を求めるウィンドウがポップアップしないでしょうか?私は 'RedirectStandardOutput'を使わないことでOKですが、' SFC'がなぜ起動していないのかを調べるのはトラブルシューティングのステップでした。 –

+0

信任状を 'ProcessStartInfo.Password'と' ProcessStartInfo.UserName'に設定することができるので、信用証明書を要求しませんが、管理者権限で開始プロセスを確認するよう求められます。確認なしにプロセスを管理者として実行したい場合は、UACの権限を下げることができます –

答えて

0

少し遅れましたが、同じ問題が発生しました。これが当てはまるかどうかは確かではありませんが、SCCMを使用して32ビットプロセスとして実行するスクリプトのデプロイメントを設定していたためです。このスクリプトは64ビットシステムに展開されていました。展開設定で「32ビットプロセスとして実行」のチェックを外すと、SFCはSystemアカウントのコンテキストで問題なく動作しました。

関連する問題