我的一个老朋友曾经说过:“任何问题都是愚蠢的。愚蠢就是避免询问。”
我对 Windows 系统管理员还很陌生(只有 3/4 个月),最近我开始使用 powershell 2.0。
我正在管理一组 Windows 服务,其中一个服务将尝试执行“Start-Service”命令作为 powershell 脚本的一部分。此 Windows 服务在域帐户“ATG\Boot”下作为管理员组的一部分运行。
但是,Start-Service / Stop-Service总是会失败,原因如下:
Stop-Service:由于以下错误,无法停止服务“SQL Server Reporting Services (MSSQLSERVER) (ReportServer)”:无法在计算机“。”上打开 ReportServer 服务。第 1 行,字符:13 + Stop-Service <<<< 报告 + CategoryInfo:CloseError:(System.ServiceProcess.ServiceController:ServiceController)[Stop-Service],
ServiceCommandException + FullyQualifiedErrorId:CouldNotStopService,Microsoft.PowerShell.Commands.StopServiceCommand
当我从 shell 执行脚本时会重现此错误,但当我使用“以管理员身份运行”选项运行脚本时可以正常工作。
我想强调的是,用户是本地管理员组的一部分。
有任何想法吗?
答案1
UAC 是否已启用?您可能必须让脚本自行提升权限。这可能意味着您的脚本将显示 UAC 提示。
这是“powershell uac prompt”的第一个搜索结果。
答案2
这是我用来停止 SQL Server 服务的脚本。通过使用带有 -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
我在这里有关于这个主题的博客文章。