Query the active worker process information in IIS 7.X using Powershell

 

Recently I worked with one of the customer, who wanted assistance in displaying the Process-Id, Application Pool Name and the Request StartTime of the IIS Worker Process (w3wp.exe) in IIS 7.X and higher through Powershell.

This blog includes the script which will serve the customer’s above requirement.

Pre-Requisites for running the below script:

1. We need IIS 7.X and higher version installed on the WebServer along with the IIS Management Scripts and Tools Feature installed. This feature is needed to gain access to the root/WebAdministration namespace which we use to query the IIS related information.

clip_image001

2. We need the Powershell to run the script.

3. Make sure that you are an Administrator on the Server where you will be running this script.

How to run the script:

1. You can modify the below script as per your environment and place it a file with extension .ps1 and run it through elevated powershell window.

2. Alternatively, You can also run the script through PowerShell ISE.

Using the Code:

 

# Ensure to import the WebAdministration module

Import-Module WebAdministration

# Declare the variables

$server = "localhost"

$search = "*"

$wmiQuery=[wmisearcher]"SELECT * FROM __Namespace where NAME like 'WebAdministration' or NAME like 'MicrosoftIISv2'"

$wmiQuery.Scope.Path = "\\" + $server + "\root"

$WebNamespace = $wmiQuery.Get()

# Checking if the the server has IIS installed

if($WebNamespace -like '*WebAdministration*')

{

    "IIS found on $server"

    $WPlist=Get-WmiObject-NameSpace'root\WebAdministration'-class'WorkerProcess'-ComputerName'LocalHost'

    # Loop through the list of active IIS Worker Processes w3wp.exe and fetch the PID, AppPool Name and the startTime

    forEach ($WPin$WPlist)

    {

        if ($WP.apppoolname -like$search)

        {

           write-host"Found:""PID:"$WP.processid  "AppPool_Name:"$WP.apppoolname 

             (get-process -ID $WP.processid|select starttime)

        }

    }

}

Else

{

   write-host"WARNING: IIS not detected."

}

 

More Information

The following article will provide a few cmdlets which are available for the IIS:

 https://technet.microsoft.com/en-us/library/ee790599.aspx

 

DISCLAIMER

The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages