簡體   English   中英

通過站點名稱殺死IIS工作進程

[英]kill IIS worker process by sitename

對於此問題,“站點名稱” = IIS稱為站點的名稱。 EG,輸出:

ls IIS:\Sites\ | select Name

給定具有這些站點名稱的文本文件,我想遍歷所有正在運行的w3wp.exe進程,然后終止(而不是回收,終止)所有與列表中的站點名稱無關的w3wp.exe進程。 (我的列表不是ls IIS:\\ Sites \\ |選擇Name btw的輸出,這只是定義我們稱為“站點名稱”的一個示例。我的列表是應該在服務器運行的站點名稱的列表,手動創建)

我可以用殺死所有的w3wp.exe

taskkill /IM w3wp.exe /F

但是我正在努力在IIS站點名稱及其關聯的工作進程之間建立連接,因此我可以根據站點名稱殺死特定的IIS。 我猜我需要去siteName> appPool> worker程序...但是我很難過。

$workerProcesses = Get-CimInstance Win32_Process -Filter "name='w3wp.exe'"
foreach ($workerProcess in $workerProcesses)
{
    $wpSiteName = $workerProcess.CommandLine.split(" ")[2].replace("`"","")
    $wpPID = $workerProcess.ProcessId

    if ($myListNotShownHere -notcontains $wpSiteName)
    {
        #taskkill /f /pid $wpPID   
    }
}

除了終止工作進程外,您還可以停止該站點。 由於無需終止並重新啟動任何進程,因此對性能更友好。

正如@Eris所評論的那樣,您可以使用WebAdministration模塊來執行此操作:

Import-Module WebAdministration
Stop-Website -Name "MySite"

您需要以提升的狀態運行PowerShell才能使用WebAdministration模塊。

如果確實必須終止工作進程,請在此處查看stej的答案: 如何獲取IIS AppPool工作進程ID

暫無
暫無

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

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