簡體   English   中英

如何用 PowerShell 停止 IIS?

[英]How to Stop IIS with PowerShell?

我正在學習 PowerShell 並試圖在遠程服務器上停止 IIS。

我正在使用以管理員模式啟動的 PowerGUI 腳本編輯器。

我有這個代碼

$service = Get-WmiObject Win32_Service -ComputerName 'myserver'  -Filter "Name='IISAdmin'"
$service
$service.StopService();
$service.State

State 總是返回運行。 我不知道為什么它沒有停止。

編輯

我在運行時遇到的錯誤

Invoke-Command -ComputerName 'myserver' { Stop-Service IISAdmin }

連接到遠程服務器失敗並顯示以下錯誤消息:客戶端無法連接到請求中指定的目標。 驗證目標上的服務是否正在運行並且正在接受請求。 查閱在目標上運行的 WS-Management 服務的日志和文檔,最常見的是 IIS 或 WinRM。 如果目標是 WinRM 服務,在目標上運行以下命令來分析和配置 WinRM 服務:“winrm quickconfig”。 有關詳細信息,請參閱 about_Remote_Troubleshooting 幫助主題。

編輯2

我發現了這個,它似乎有效。 我不知道如何從 Stop-Service 取回信息,所以我不得不使用其他方式將其發送給我。 如果你知道怎么做,請告訴我。

Stop-Service -Force -InputObject $(Get-Service -Computer myserver -Name IISAdmin)
$service = Get-WmiObject Win32_Service -ComputerName 'myserver '  -Filter "Name='IISAdmin'"
$service.State

這行得通。 我不明白為什么。 我唯一能想到的是我必須使用 -Force 因為它不會停止服務器,否則也許這是一個原因?

您可以使用iisreset遠程停止/重新啟動iis:

iisreset [computername]

停止IIS(例如iis-Manager中服務器上的“右鍵單擊>停止”):

spsv iisadmin,was,w3svc -pa

手段:

stop-service -name iisadmin,was,w3svc -passThru # -passThru is optional but basically outputs the result

(或者: gsv iisadmin,was,w3svc |spsv -pa|sasv -pa重新啟動服務並輸出結果,但在此示例中,僅第二個-pa是可選的!)僅供參考:gsv = get-service,sasv = start -service,spsv =停止服務,pa = passThru)

Invoke-Command -ComputerName myserver { Stop-Service W3SVC}

嘗試使用PsExec \\ Server2 -u管理員-p somePassword IISReset / STOP

或使用PowerGUI腳本編輯器

$service = Get-WmiObject -computer 'ServerA' Win32_Service -Filter "Name='IISAdmin'"
$service
$service.InvokeMethod('StopService',$Null)
$service.State

嘗試使用

$server = "servername"
$siteName = "Default Web Site"
$iis = [ADSI]"IIS://$server/W3SVC"
$site = $iis.psbase.children | where { $_.keyType -eq "IIsWebServer" -AND
$_.ServerComment -eq $siteName }
$site.serverstate=3
$site.setinfo()

我不喜歡處理 WMI 對象。 相反,我建議將iisreset /stop與 PowerShell 遠程處理結合使用。 所以,本質上是這樣的:

Invoke-Command -ComputerName 'myserver' -ScriptBlock { & iisreset /stop }

您也可以將/stop換成/start以在遠程服務器上啟動 IIS。

如果您不想利用iisreset.exe而是使用純 PowerShell,則可以啟動/停止W3SVC服務:

Invoke-Command -ComputerName 'myserver' -ScriptBlock { Stop-Service W3SVC }

並將Stop-Service替換為Start-Service以重新啟動它。 W3SVC服務是 IIS。

還有另一種簡單的方法如何停止 IIS = 只是從 Powershell 運行

iisreset /stop

並啟動 IIS,只需

iisreset /start

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM