Postagem antiga, mas me deparei com esse problema exato e precisei de ajuda com isso. Espero que esta resposta ajude alguém.
Estava acontecendo comigo no Windows Server 2012 R2 executando o PowerShell 4. Minha solução não é exatamente uma correção real, mas me ajuda do que eu precisava. O que fiz foi colocar essa operação em um "thread" de plano de fundo para que o processo principal não fosse bloqueado pela janela pop-up, indicando que o PowerShell travou. Nota O PowerShell estava apenas falhando para mim quando eu executei um script que fazia isso através do cmd ou do Microsoft Release Management. Ao chamar o script diretamente em uma janela do PowerShell, ele não travou. Mesmo quando estava falhando, tudo o que eu queria que o roteiro fizesse estava sendo executado. Ele só caiu depois que o script terminou.
Aqui está um pouco do meu código
param($password)
$jobScript = {
Try
{
<# Clear the $Error variable so errors do not build up when debugging this script #>
$Error.Clear()
$userName = "SomeUser"
If([ADSI]::Exists("WinNT://./$userName"))
{
Add-Type -Path "C:\windows\system32\inetsrv\Microsoft.Web.Management.dll"
Add-Type -Path "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll"
<# Set IIS Permissions on Default Web Site #>
Try
{
$errorMessage = "Error setting IIS Permissions on Default Web Site for $userName"
[Microsoft.Web.Management.Server.ManagementAuthorization]::Grant("$userName", "Default Web Site", $false)
Write-Output "IIS Permissions set on Default Web Site for $userName"
}
Catch <# Tried catching the specific exception thrown, but was not working #>
{
Write-Output "IIS Permissions already set on Default Web Site for $userName"
}
}
Else
{
$errorMessage = "The SomeUser user must be created prior to running this script"
Write-Output $errorMessage
Throw $errorMessage
}
}
Catch
{
# Signal failure to Microsoft Release Management
Write-Error "$errorMessage - $Error"
}
}
$job = Start-Job $jobScript
Wait-Job $job
Receive-Job $job