2015-12-14 58 views
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 
    } 
} 
+2

我懷疑你遇到了權限問題。嘗試啓動與計劃任務一樣運行的PowerShell會話。你還能夠檢查你的服務狀態嗎? – djs

+0

我無法使用我正在使用的帳戶憑據登錄到服務器,但我確實輸入了我的NT登錄憑據以進行計劃任務,當然這確實有效。這似乎很奇怪,該帳戶有權運行該命令,但不返回狀態字段信息。接下來的問題是需要什麼權限才能獲得該狀態,以便我可以考慮授予該帳戶的權限。這將需要更新許多服務器。 – pretzelb

+0

以不同的用戶身份找到運行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

回答

0

感謝@djs我找到了解決方案,雖然不是一個絕妙的解決方案。將帳戶添加到每個服務器的管理員組允許執行命令。在我們的情況下,這不是一個問題,所以我們要去解決這個問題。