私の古い仲間は、「どんな質問も愚かです。愚かは尋ねることを避けます」と言っていました。
私はWindowsシステム管理者(わずか3/4か月)を初めて使用し、最近PowerShell2.0の作業を開始しました。
私は一連のWindowsサービスを管理していますが、そのうちの1つがPowerShellスクリプトの一部として「Start-Service」コマンドを実行しようとしています。このWindowsサービスは、管理者グループの一部としてドメインアカウント「ATG\Boot」で実行されています。
ただし、Start-Service/Stop-Serviceは、次の理由で常に失敗します。
Stop-Service:サービス 'SQL Server Reporting Services(MSSQLSERVER)(ReportServer)'は、次のエラーのために停止できません:コンピューター '。'でReportServerサービスを開くことができません。行:1文字:13 + Stop-Service <<<< Report + CategoryInfo:CloseError:(System.ServiceProcess.ServiceController:ServiceController)[Stop-Service]、
ServiceCommandException + FullyQualifiedErrorId:CouldNotStopService、Microsoft.PowerShell.Commands.StopServiceCommand
このエラーは、シェルからスクリプトを実行すると再現されますが、「管理者として実行」オプションを指定してスクリプトを実行すると正しく機能します。
ユーザーがローカル管理者グループの一部であることを共感したいと思います。
何か案は?
UACは有効になっていますか?おそらく、スクリプト自体を昇格させる必要があります。これはおそらく、スクリプトがUACプロンプトを表示することを意味します。
これは、「powershelluacPrompt」の最初の検索ヒットでした。
これは、SQLServerサービスを停止するために使用するスクリプトです。 -runasスイッチを指定してstart-processを使用すると、別のPowerShellプロセスが管理者として開始されます。 UACの入力を求められます。
Start-Process powershell.exe -argumentlist '-noprofile -command get-service -Name "MSSQL`$R2" | ? {$_.Status -eq "Running"} | Stop-Service -Force' -verb runas
このテーマについてのブログ投稿があります。