Welcome to the navigation

Eiusmod commodo cupidatat sunt minim ut laborum, deserunt in aliqua, ut non ea occaecat quis reprehenderit tempor consectetur dolor ipsum sit id nisi eu et. Deserunt aute nisi sed incididunt eiusmod ad sint non in consectetur duis ut adipisicing est commodo et elit, dolore anim officia esse magna quis cupidatat

Yeah, this will be replaced... But please enjoy the search!

Configure IIS Remote Management using PowerShell

I needed to activate the IIS Web Management Service (WMSvc) on some Windows 2012 R2 servers running Server Core to enable the remote management of IIS. 

This was done using PowerShell (as usual). There are two scripts in this post, they are both the same but the second one use a wrapper to perform the configuration remotely.

Local

# Get the service
$webManagementService = Get-Service WMSVC -ErrorAction Stop
 
# Stop the WMSVC, if running
if($webManagementService.Status -eq "Running") {
    Write-Host "WMSVC was running, stopping the service..." -ForegroundColor Yellow
    Stop-Service WMSVC
}
 
# Modify the EnableRemoteManagement property in the Windows Registry
$enableRemoteManagement = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name "EnableRemoteManagement"
if($enableRemoteManagement.EnableRemoteManagement -eq 0) {
    Write-Host "Setting the EnableRemoteManagement property" -ForegroundColor Yellow
    Set-ItemProperty HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name "EnableRemoteManagement" -Value 1 -ErrorAction Stop
    Write-Host "EnableRemoteManagement property set" -ForegroundColor Green
} else {
    Write-Host "The EnableRemoteManagement property was already set, skipping" -ForegroundColor Yellow
}
 
# Ensure automatic start of the WMSVC service
Write-Host "Starting the WMSVC service and enabling automatic startup" -ForegroundColor Yellow
Start-Service WMSVC
Set-Service WMSVC -StartupType Automatic
Write-Host "Service started and configured" -ForegroundColor Green
 
 
$port = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name "Port").Port
Write-Host "The Web Management Service is now configured running at port $port" -ForegroundColor Green

Remote

# setup
$server = "serveraddress"
 
# connect to server
$session = New-PSSession -ComputerName $server -Authentication Default
$job = Invoke-Command -Session $session -ScriptBlock { 
 
    # Get the service
    $webManagementService = Get-Service WMSVC -ErrorAction Stop
 
    # Stop the WMSVC, if running
    if($webManagementService.Status -eq "Running") {
        Write-Host "WMSVC was running, stopping the service..." -ForegroundColor Yellow
        Stop-Service WMSVC
    }
 
    # Modify the EnableRemoteManagement property in the Windows Registry
    $enableRemoteManagement = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name "EnableRemoteManagement"
    if($enableRemoteManagement.EnableRemoteManagement -eq 0) {
        Write-Host "Setting the EnableRemoteManagement property" -ForegroundColor Yellow
        Set-ItemProperty HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name "EnableRemoteManagement" -Value 1 -ErrorAction Stop
        Write-Host "EnableRemoteManagement property set" -ForegroundColor Green
    } else {
        Write-Host "The EnableRemoteManagement property was already set, skipping" -ForegroundColor Yellow
    }
 
    # Ensure automatic start of the WMSVC service
    Write-Host "Starting the WMSVC service and enabling automatic startup" -ForegroundColor Yellow
    Start-Service WMSVC
    Set-Service WMSVC -StartupType Automatic
    Write-Host "Service started and configured" -ForegroundColor Green
 
 
    $port = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name "Port").Port
    Write-Host "The Web Management Service is now configured running at port $port" -ForegroundColor Green
 
} -AsJob
 
# output
do {
    Receive-Job -Job $job
} while ($job.HasMoreData)

Test

You should now be able to connect to your IIS server using the remote tools.

Enjoy