IIS 사용자 생성 후 PS 종료 시 "powershell이 ​​작동을 멈췄습니다."

IIS 사용자 생성 후 PS 종료 시 "powershell이 ​​작동을 멈췄습니다."

Windows Server 2012 상자에서 PS를 사용하여 새 IIS 사용자를 생성하고 있습니다(MSDeploy를 사용한 자동화된 배포용). 명령 자체는 제대로 작동하는 것처럼 보입니다. 사용자가 생성되었지만 PowerShell 세션을 종료하자마자( exit명령 창을 입력하거나 닫음) 다음 세부 정보와 함께 "powershell이 ​​작동을 중지했습니다"라는 대화 상자가 표시됩니다. :

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

문제의 PS 명령은 다음과 같습니다.

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

왜 이런 일이 발생하며 어떻게 방지할 수 있나요?

편집하다:또한 이것이 PowerShell 4.0의 문제임을 확인하여 해당 태그를 추가했습니다. 나도 제출했어연결하다.

업데이트:Windows Server 2012 R2에는 이와 동일한 버그가 없는 것으로 보입니다.

답변1

오래된 게시물이지만 정확한 문제가 발생하여 도움이 필요했습니다. 이 답변이 다른 사람에게 도움이 되기를 바랍니다.

PowerShell 4를 실행하는 Windows Server 2012 R2에서 이런 일이 발생했습니다. 내 솔루션은 정확히 완전한 해결책은 아니지만 나에게 필요한 것을 제공합니다. 내가 한 일은 이 작업을 백그라운드 "스레드"에 두어 PowerShell이 ​​충돌했음을 나타내는 팝업 창에 의해 기본 프로세스가 차단되지 않도록 하는 것이었습니다. 참고 PowerShell은 cmd 또는 Microsoft Release Management를 통해 이 작업을 수행하는 스크립트를 실행할 때만 충돌했습니다. PowerShell 창에서 직접 스크립트를 호출하면 충돌이 발생하지 않았습니다. 충돌이 발생하는 동안에도 내가 원했던 모든 스크립트가 수행되었습니다. 스크립트가 완료된 후에야 충돌이 발생했습니다.

여기 내 코드가 있습니다

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

답변2

해결됨 - powershell 또는 powershell_ise를 시작할 때 "Powershell이 ​​작동을 멈췄습니다." 오류가 발생합니다. 이 오류는 "관리자 권한으로 실행" 프로그램을 시작할 때 발생하지 않았습니다. 이 네트워크에 있는 20개의 물리적 서버와 가상 서버 모두에서 이 문제가 발생합니다. Windows Management Framework와 관련된 것으로 보입니다. 모든 서버에는 Windows Management Framework V5.1이 설치되어 있습니다.

이로써 테스트된 모든 서버의 오류가 해결되었습니다.

아직 설치되지 않은 경우 Windows 관리 프레임워크를 설치합니다.

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

컴퓨터에 이미 Windows Management Framework가 설치되어 있는 경우 이 업데이트를 설치하십시오.

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

설치가 완료되면 서버를 다시 시작하십시오.

이 내용이 도움이 되었다면 투표해 주세요.

관련 정보