
Auf einer Windows Server 2012-Box verwende ich PS, um einen neuen IIS-Benutzer zu erstellen (für automatisierte Bereitstellungen mit MSDeploy). Der Befehl selbst scheint einwandfrei zu funktionieren – der Benutzer wird erstellt –, aber sobald ich meine PowerShell-Sitzung beende (durch Eintippen exit
oder Schließen des Befehlsfensters), wird ein Dialogfeld mit der Meldung „PowerShell funktioniert nicht mehr“ mit den folgenden Details angezeigt:
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
Die betreffenden PS-Befehle sind:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Management")
[Microsoft.Web.Management.Server.ManagementAuthentication]::CreateUser("Foo", "Bar")
Warum passiert das und wie kann ich es vermeiden?
BEARBEITEN:Ich habe auch bestätigt, dass dies ein Problem mit PowerShell 4.0 ist, also habe ich dieses Tag hinzugefügt. Ich habe es auch eingereicht aufVerbinden.
AKTUALISIEREN:Es scheint, dass dieser Fehler bei Windows Server 2012 R2 nicht auftritt.
Antwort1
Alter Beitrag, aber ich bin auf genau dieses Problem gestoßen und brauchte Hilfe dabei. Hoffentlich hilft diese Antwort jemand anderem.
Das passierte mir unter Windows Server 2012 R2 mit PowerShell 4. Meine Lösung ist nicht wirklich eine echte Lösung, aber sie bringt mir, was ich brauche. Ich habe diesen Vorgang in einen Hintergrund-„Thread“ gelegt, damit der Hauptprozess nicht durch das Popup-Fenster blockiert wird, das anzeigt, dass PowerShell abgestürzt ist. Beachten Sie, dass PowerShell bei mir nur abstürzte, wenn ich ein Skript ausführte, das dies über cmd oder Microsoft Release Management tat. Beim direkten Aufrufen des Skripts in einem PowerShell-Fenster stürzte es nicht ab. Selbst als es abstürzte, wurde alles ausgeführt, was das Skript tun sollte. Es stürzte erst ab, nachdem das Skript beendet war.
Hier ist ein Teil meines Codes
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
Antwort2
Gelöst - „Powershell funktioniert nicht mehr“-Fehler beim Starten von Powershell oder powershell_ise. Dieser Fehler trat nicht auf, wenn diese Programme „Als Administrator ausführen“ gestartet wurden. Alle 20 physischen und virtuellen Server in diesem Netzwerk haben dieses Problem. Es scheint mit dem Windows Management Framework zusammenzuhängen. Auf allen Servern ist Windows Management Framework V5.1 installiert.
Dadurch wurde der Fehler auf allen getesteten Servern behoben:
Installieren Sie das Windows Management Framework, falls es noch nicht installiert ist.
https://docs.microsoft.com/en-us/powershell/scripting/wmf/overview?view=powershell-6
Wenn auf Ihrem Computer bereits Windows Management Framework installiert ist, installieren Sie dieses Update:
http://www.catalog.update.microsoft.com/Search.aspx?q=3191564
Starten Sie den Server nach der Installation neu.
Bitte stimmen Sie ab, wenn Sie dies hilfreich finden.