"PowerShell dejó de funcionar" al salir de PS después de crear un usuario de IIS

"PowerShell dejó de funcionar" al salir de PS después de crear un usuario de IIS

En una caja de Windows Server 2012, estoy usando PS para crear un nuevo usuario de IIS (para implementaciones automatizadas usando MSDeploy). El comando en sí parece funcionar bien (se crea el usuario), pero tan pronto como salgo de mi sesión de PowerShell (escribiendo exito simplemente cerrando la ventana de comandos), aparece un cuadro de diálogo que dice "powershell ha dejado de funcionar", con los siguientes detalles :

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

Los comandos de PS en cuestión son:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Management")
[Microsoft.Web.Management.Server.ManagementAuthentication]::CreateUser("Foo", "Bar")

¿Por qué sucede esto y cómo puedo evitarlo?

EDITAR:También confirmé que esto es un problema con PowerShell 4.0, así que agregué esa etiqueta. También lo envié enConectar.

ACTUALIZAR:Parece que Windows Server 2012 R2 no tiene este mismo error.

Respuesta1

Publicación anterior, pero me encontré exactamente con este problema y necesitaba ayuda. Esperemos que esta respuesta ayude a alguien más.

Me estaba sucediendo en Windows Server 2012 R2 con PowerShell 4. Mi solución no es exactamente una solución verdadera, pero me brinda lo que necesitaba. Lo que hice fue poner esta operación en un "hilo" en segundo plano para que el proceso principal no fuera bloqueado por la ventana emergente que indicaba que PowerShell falló. Tenga en cuenta que PowerShell solo fallaba cuando ejecutaba un script que hacía esto a través de cmd o Microsoft Release Management. Al llamar al script directamente en una ventana de PowerShell, no falló. Incluso cuando fallaba, todo lo que quería que hiciera el guión se estaba ejecutando. Sólo falló después de que terminó el guión.

Aquí está un poco de mi 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

Respuesta2

Resuelto: error "Powershell dejó de funcionar" al iniciar powershell o powershell_ise. Este error no ocurrió al iniciar estos programas "Ejecutar como administrador". Los 20 servidores físicos y virtuales de esta red experimentan este problema. Parece estar relacionado con Windows Management Framework. Todos los servidores tienen instalado Windows Management Framework V5.1.

Esto resolvió el error en todos los servidores probados:

Instale Windows Management Framework si aún no está instalado.

https://docs.microsoft.com/en-us/powershell/scripting/wmf/overview?view=powershell-6

Si su computadora ya tiene instalado Windows Management Framework, instale esta actualización:

http://www.catalog.update.microsoft.com/Search.aspx?q=3191564

Una vez instalado, reinicie el servidor.

Por favor vote si esto le resulta útil.

información relacionada