
Em uma caixa do Windows Server 2012, estou usando PS para criar um novo usuário IIS (para implantações automatizadas usando MSDeploy). O comando em si parece funcionar bem - o usuário é criado - mas assim que eu saio da minha sessão do PowerShell (digitando exit
ou apenas fechando a janela de comando), uma caixa de diálogo é exibida informando "o powershell parou de funcionar", com os seguintes detalhes :
Problem signature:
Problem Event Name: PowerShell
NameOfExe: powershell.exe
FileVersionOfSystemManagementAutomation: 6.2.9200.16628
InnermostExceptionType: Runtime.InteropServices.InvalidComObject
OutermostExceptionType: Runtime.InteropServices.InvalidComObject
DeepestPowerShellFrame: unknown
DeepestFrame: System.StubHelpers.StubHelpers.GetCOMIPFromRCW
ThreadName: unknown
OS Version: 6.2.9200.2.0.0.400.8
Locale ID: 1033
Os comandos PS em questão são:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Management")
[Microsoft.Web.Management.Server.ManagementAuthentication]::CreateUser("Foo", "Bar")
Por que isso está acontecendo e como posso evitá-lo?
EDITAR:Também confirmei que isso é um problema com o PowerShell 4.0, então adicionei essa tag. Eu também enviei emConectar.
ATUALIZAR:Parece que o Windows Server 2012 R2 não possui esse mesmo bug.
Responder1
Post antigo, mas me deparei exatamente com esse problema e precisava de ajuda com ele. Espero que esta resposta ajude outra pessoa.
Isso estava acontecendo comigo no Windows Server 2012 R2 executando o PowerShell 4. Minha solução não é exatamente uma solução verdadeira, mas me dá o que eu precisava. O que fiz foi colocar essa operação em um "thread" de segundo plano para que o processo principal não fosse bloqueado pela janela pop-up indicando que o PowerShell travou. Observação O PowerShell só estava travando para mim quando executei um script que fazia isso por meio do cmd ou do Microsoft Release Management. Ao chamar o script diretamente em uma janela do PowerShell, ele não travou. Mesmo quando estava travando, tudo que eu queria que o script fizesse estava sendo executado. Ele só travou 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
Responder2
Resolvido - erro "O Powershell parou de funcionar" ao iniciar o powershell ou o powershell_ise. Este erro não acontecia ao iniciar estes programas “Executar como Administrador”. Todos os 20 servidores físicos e virtuais nesta rede enfrentam esse problema. Parece estar relacionado ao Windows Management Framework. Todos os servidores possuem o Windows Management Framework V5.1 instalado.
Isso resolveu o erro em todos os servidores testados:
Instale o Windows Management Framework se ainda não estiver instalado.
https://docs.microsoft.com/en-us/powershell/scripting/wmf/overview?view=powershell-6
Se o seu computador já tiver o Windows Management Framework instalado, instale esta atualização:
http://www.catalog.update.microsoft.com/Search.aspx?q=3191564
Depois de instalado, reinicie o servidor.
Por favor vote se você achar isso útil.