2016-11-07 585 views
0

通過在PowerShell中編寫腳本,我想確定Windows服務是否正在運行或未運行。對於這一點,我已經構建了以下腳本:使用PowerShell檢查Windows服務狀態

#Variables 

$winupdate = 'Windows Update' 
$running = 'Running' 

#Function 

function CheckServiceStatus { 
param($winupdate) 
$getservice = Get-Service -Name $winupdate 
if($getservice.Status -ne $running){ 
    Start-Service $winupdate 
    Write-host "Starting" $winupdate "service"|out-file "C:\Users\ArifSohM\Desktop\Stuff for PowerShell\results.txt" 
    } 
} 

要解釋,我一直試圖在這裏做的是簡單的,創建一個名爲「CheckServiceStatus」功能。在該函數中,我創建了一個參數並將Windows服務名稱的變量放在此參數中。然後,我將「Get-Service」cmdlet放入另一個名爲「$ getservice」的變量中。然後我開始啓動一個應該檢查服務是否正在運行的IF語句,所以我在這裏說的是,如果服務沒有運行,請啓動服務,創建一個文本文件並向它輸出一條確認消息。

在碰到上面的腳本運行後,似乎沒有任何事情發生。難道我做錯了什麼?我錯過了什麼嗎?任何幫助都感激不盡!

回答

1

您正在使用服務顯示名稱而不是服務名稱。

的Windows更新「WUAUSERV」服務名稱 改變winupdate可變部分,你應該罰款

$winupdate = 'wuauserv' 

函數的定義應該是調用該函數 和函數調用語句

完整的代碼之前:

function CheckServiceStatus { 
param($winupdate) 
$getservice = Get-Service -Name $winupdate 
if($getservice.Status -ne $running){ 
    Start-Service $winupdate 
    Write-output "Starting" $winupdate "service"|out-file "C:\Users\ArifSohM\Desktop\Stuff for PowerShell\results.txt" 
    } 
} 

#Variables 

$winupdate = 'wuauserv' 
$running = 'Running' 
CheckServiceStatus $winupdate 
+0

感謝您的回覆,我將其更改爲建議的名稱並運行了腳本,不幸的是,noth發生了。它的功能是,當我點擊F5執行腳本時,它將它打印在藍色容器中,然後是「PS C:\ Users \ ArifSohM \ Desktop」。我還檢查了輸出文件所在的文件夾,沒有任何東西 –

+0

@MuhammadSohailArif我已經更新完整的代碼,現在檢查 –

+0

是的,我檢查了它,它的工作,但它沒有打印輸出文件中的任何東西 –