web-dev-qa-db-ja.com

管理者としてログインせずに管理者としてスクリプトを実行する

私の古い仲間は、「どんな質問も愚かです。愚かは尋ねることを避けます」と言っていました。

私は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

このエラーは、シェルからスクリプトを実行すると再現されますが、「管理者として実行」オプションを指定してスクリプトを実行すると正しく機能します。

ユーザーがローカル管理者グループの一部であることを共感したいと思います。

何か案は?

4
NAADEV

UACは有効になっていますか?おそらく、スクリプト自体を昇格させる必要があります。これはおそらく、スクリプトがUACプロンプトを表示することを意味します。

これは、「powershelluacPrompt」の最初の検索ヒットでした。

https://stackoverflow.com/questions/1566969/showing-the-uac-Prompt-in-powershell-if-the-action-requires-elevation

2
Zoredache

これは、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

このテーマについてのブログ投稿があります。

0
Chad Miller