【发布时间】:2016-03-20 11:52:11
【问题描述】:
我在下面运行此代码作为一个函数来遍历服务器列表以检查服务是否正在运行。这在手动运行时有效。从计划任务运行时,代码 $arrService.Status 转换为服务名称。我什至尝试过Get-Service -Computer $Server -display $ServiceName | Select -expandproperty Status 之类的东西,但它返回空字符串或没有值。
知道为什么从计划任务运行时状态属性不起作用吗?
function CheckService{
param($Server, $ServiceName)
$arrService = Get-Service -Computer $Server -display $ServiceName
if ($arrService.Status -ne "Running"){
Start-Service -InputObject $ServerService
}
}
【问题讨论】:
-
我怀疑您遇到了权限问题。尝试启动以与您的计划任务相同的用户身份运行的 PowerShell 会话。您还能检查服务的状态吗?
-
我无法使用我正在使用的帐户凭据登录服务器,但我确实为计划任务输入了我的 NT 登录凭据,当然这确实有效。该帐户有权运行命令但不返回状态字段信息,这似乎很奇怪。下一个问题是获取状态需要哪些权限,以便我可以考虑为该帐户授予该权限。这将需要更新大量服务器。
-
找到一个以不同用户身份运行 powershell 的链接 [link]blogs.technet.com/b/benshy/archive/2012/06/04/…
标签: powershell scheduled-tasks server-administration