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