2
我在下面运行此代码作为遍历服务器列表以检查服务是否正在运行的函数。这在手动运行时有效。从计划任务运行时,代码$arrService.Status
转换为服务名称。我甚至尝试过类似Get-Service -Computer $Server -display $ServiceName | Select -expandproperty Status
但返回空字符串或没有值。Powershell获取服务状态不能像预定任务一样工作
任何想法为什么从一个计划任务运行状态属性不会工作?
function CheckService{
param($Server, $ServiceName)
$arrService = Get-Service -Computer $Server -display $ServiceName
if ($arrService.Status -ne "Running"){
Start-Service -InputObject $ServerService
}
}
我怀疑你遇到了权限问题。尝试启动与计划任务一样运行的PowerShell会话。你还能够检查你的服务状态吗? – djs
我无法使用我正在使用的帐户凭据登录到服务器,但我确实输入了我的NT登录凭据以进行计划任务,当然这确实有效。这似乎很奇怪,该帐户有权运行该命令,但不返回状态字段信息。接下来的问题是需要什么权限才能获得该状态,以便我可以考虑授予该帐户的权限。这将需要更新许多服务器。 – pretzelb
以不同的用户身份找到运行PowerShell的链接[link] http://blogs.technet.com/b/benshy/archive/2012/06/04/using-a-powershell-script-to-run-as-a - 不同用户-AMP-ELEVATE最process.aspx [/链接] – pretzelb