Ошибка Enter-PSSession на локальном хосте

Я пытаюсь выполнить следующую команду Powershell:

Enter-PSSession -ComputerName localhost

Используемый сервер работает под управлением 64-разрядной версии Windows Server 2008 R2 SP1. Сервер находится в домене. Я вошел в систему под своей учетной записью администратора домена. Сеанс powershell был запущен от имени администратора.

Я получаю следующее сообщение об ошибке от самой powershell:

PS C:\Users\Daniel> Enter-PSSession -Computername localhost
Enter-PSSession : Connecting to remote server localhost failed with the following error message : The client cannot
connect to the destination specified in the request. Verify that the service on the destination is running and is
accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most
commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to
analyze and configure the WinRM service: "winrm quickconfig". For more information, see the
about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -Computername localhost
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (localhost:String) [Enter-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

PS C:\Users\Daniel>

Используя средство просмотра событий, я могу найти следующие две ошибки в разделе «Журналы приложений и служб»> Microsoft> Windows> Windows Remote Management> Operational

General:
    The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".
Detail:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
        <System>
            <Provider Name="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" /> 
            <EventID>161</EventID> 
            <Version>0</Version> 
            <Level>2</Level> 
            <Task>7</Task> 
            <Opcode>0</Opcode> 
            <Keywords>0x400000000000000a</Keywords> 
            <TimeCreated SystemTime="2016-08-17T23:10:40.766446000Z" /> 
            <EventRecordID>56814</EventRecordID> 
            <Correlation ActivityID="{0190DC40-F800-0000-3291-5DB0DAF8D101}" /> 
            <Execution ProcessID="7888" ThreadID="7912" /> 
            <Channel>Microsoft-Windows-WinRM/Operational</Channel> 
            <Computer>FNZAS2.flow.net.nz</Computer> 
            <Security UserID="S-1-5-21-2875926586-1071052228-4104636349-1151" /> 
        </System>
        <EventData>
            <Data Name="authFailureMessage">The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".</Data> 
        </EventData>
    </Event>   

General:
    WSMan operation CreateShell failed, error code 2150858770
Detail:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
        <System>
            <Provider Name="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" /> 
            <EventID>142</EventID> 
            <Version>0</Version> 
            <Level>2</Level> 
            <Task>10</Task> 
            <Opcode>2</Opcode> 
            <Keywords>0x4000000000000002</Keywords> 
            <TimeCreated SystemTime="2016-08-17T23:10:40.766446000Z" /> 
            <EventRecordID>56816</EventRecordID> 
            <Correlation ActivityID="{0190DC40-F800-0000-2F91-5DB0DAF8D101}" /> 
            <Execution ProcessID="7888" ThreadID="7912" /> 
            <Channel>Microsoft-Windows-WinRM/Operational</Channel> 
            <Computer>FNZAS2.flow.net.nz</Computer> 
            <Security UserID="S-1-5-21-2875926586-1071052228-4104636349-1151" /> 
        </System>
        <EventData>
            <Data Name="operationName">CreateShell</Data> 
            <Data Name="errorCode">2150858770</Data> 
        </EventData>
    </Event>

Я пробовал довольно много вещей чтобы все проверить. Вот еще несколько длинных выходных данных PowerShell, чтобы показать некоторые из моих работ

PS C:\Users\Daniel> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1


PS C:\Users\Daniel> winrm quickconfig
WinRM service is already running on this machine.
WinRM is already set up for remote management on this computer.

PS C:\Users\Daniel> Enable-PSRemoting
WinRM Quick Configuration
Running command "Set-WSManQuickConfig" to enable remote management of this computer by using the Windows Remote
Management (WinRM) service.
 This includes:
    1. Starting or restarting (if already started) the WinRM service
    2. Setting the WinRM service startup type to Automatic
    3. Creating a listener to accept requests on any IP address
    4. Enabling Windows Firewall inbound rule exceptions for WS-Management traffic (for http only).

Do you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.

Confirm
Are you sure you want to perform this action?
Performing the operation "Set-PSSessionConfiguration" on target "Name: microsoft.powershell SDDL:
O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD). This lets selected users remotely run Windows PowerShell
commands on this computer.".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A

PS C:\Users\Daniel> Enable-PSRemoting -force
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.

PS C:\Users\Daniel> winrm get winrm/config
Config
    MaxEnvelopeSizekb = 500
    MaxTimeoutms = 60000
    MaxBatchItems = 32000
    MaxProviderRequests = 4294967295
    Client
        NetworkDelayms = 5000
        URLPrefix = wsman
        AllowUnencrypted = true [Source="GPO"]
        Auth
            Basic = true [Source="GPO"]
            Digest = true
            Kerberos = true
            Negotiate = true
            Certificate = true
            CredSSP = true [Source="GPO"]
        DefaultPorts
            HTTP = 5985
            HTTPS = 5986
        TrustedHosts = *
    Service
        RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
        MaxConcurrentOperations = 4294967295
        MaxConcurrentOperationsPerUser = 1500
        EnumerationTimeoutms = 240000
        MaxConnections = 300
        MaxPacketRetrievalTimeSeconds = 120
        AllowUnencrypted = false
        Auth
            Basic = true [Source="GPO"]
            Kerberos = true
            Negotiate = true
            Certificate = false
            CredSSP = true [Source="GPO"]
            CbtHardeningLevel = Relaxed
        DefaultPorts
            HTTP = 5985
            HTTPS = 5986
        IPv4Filter [Source="GPO"]
        IPv6Filter [Source="GPO"]
        EnableCompatibilityHttpListener = false
        EnableCompatibilityHttpsListener = false
        CertificateThumbprint
        AllowRemoteAccess = true [Source="GPO"]
    Winrs
        AllowRemoteShellAccess = true [Source="GPO"]
        IdleTimeout = 7200000
        MaxConcurrentUsers = 10
        MaxShellRunTime = 2147483647
        MaxProcessesPerShell = 25
        MaxMemoryPerShellMB = 1000
        MaxShellsPerUser = 30

PS C:\Users\Daniel> winrm e winrm/config/listener
Listener [Source="GPO"]
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = null

PS C:\Users\Daniel> get-service WinRM

Status   Name               DisplayName
------   ----               -----------
Running  WinRM              Windows Remote Management (WS-Manag...

PS C:\Users\Daniel> winrm get wmicimv2/Win32_Service?Name=WinRM
Win32_Service
    AcceptPause = false
    AcceptStop = true
    Caption = Windows Remote Management (WS-Management)
    CheckPoint = 0
    CreationClassName = Win32_Service
    Description = Windows Remote Management (WinRM) service implements the WS-Management protocol for remote management.
 WS-Management is a standard web services protocol used for remote software and hardware management. The WinRM service l
istens on the network for WS-Management requests and processes them. The WinRM Service needs to be configured with a lis
tener using winrm.cmd command line tool or through Group Policy in order for it to listen over the network. The WinRM se
rvice provides access to WMI data and enables event collection. Event collection and subscription to events require that
 the service is running. WinRM messages use HTTP and HTTPS as transports. The WinRM service does not depend on IIS but i
s preconfigured to share a port with IIS on the same machine.  The WinRM service reserves the /wsman URL prefix. To prev
ent conflicts with IIS, administrators should ensure that any websites hosted on IIS do not use the /wsman URL prefix.
    DesktopInteract = false
    DisplayName = Windows Remote Management (WS-Management)
    ErrorControl = Normal
    ExitCode = 0
    InstallDate = null
    Name = WinRM
    PathName = C:\Windows\System32\svchost.exe -k NetworkService
    ProcessId = 936
    ServiceSpecificExitCode = 0
    ServiceType = Share Process
    Started = true
    StartMode = Auto
    StartName = NT AUTHORITY\NetworkService
    State = Running
    Status = OK
    SystemCreationClassName = Win32_ComputerSystem
    SystemName = FNZAS2
    TagId = 0
    WaitHint = 0

PS C:\Users\Daniel> winrm id
IdentifyResponse
    ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
    ProductVendor = Microsoft Corporation
    ProductVersion = OS: 6.1.7601 SP: 1.0 Stack: 3.0
    SecurityProfiles
        SecurityProfileName = http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/basic, http://schemas.dmtf.org/
wbem/wsman/1/wsman/secprofile/http/spnego-kerberos

PS C:\Users\Daniel> Enter-PSSession -ComputerName localhost
Enter-PSSession : Connecting to remote server localhost failed with the following error message : The client cannot
connect to the destination specified in the request. Verify that the service on the destination is running and is
accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most
commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to
analyze and configure the WinRM service: "winrm quickconfig". For more information, see the
about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName localhost
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (localhost:String) [Enter-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

PS C:\Users\Daniel>    

Я также попытался перезапустить службу WinRM, а также перезапустить весь сервер. Все еще получаются те же ошибки.

Легко пропустить. На мой (неопытный) взгляд, второе сообщение об ошибке в средстве просмотра событий кажется значимым:

Ошибка операции CreateShell WSMan, код ошибки 2150858770

Я нашел этот код ошибки на другом вопросе о сбое сервера, но ответов нет.

Я ' Нам удалось найти похожую проблему здесь . Я пробовал MaxFieldLength и MaxRequestBytes, предложенные Arthur_Li, но это не решило проблему для меня.

Этот код ошибки выглядит так, как будто он может быть в десятичном, поэтому я попытался преобразовать его в шестнадцатеричный и найти шестнадцатеричный код вместо этого, и не нашел ничего особенного, чего не было бы в базовом коде ошибки.

Я полностью озадачен на этом этапе. Раньше я без проблем устанавливал удаленное взаимодействие PowerShell на других серверах.

Однажды я получил один совет: «Прекратите использовать 2008 R2. Обновитесь до чего-то более нового». В любом случае мы планировали сделать это где-нибудь в следующие шесть месяцев. Но это не то, над чем мы сможем действовать, скорее всего, не раньше конца сентября.

Я могу обойти это, войдя в систему, загрузив сценарии развертывания и упаковав себя, и запустив их вручную. Но такой вид лишает смысла автоматическое развертывание в первую очередь.

Любая помощь будет принята с благодарностью.


ОБНОВЛЕНИЕ # 1

Попытка удалить, а затем восстановить прослушиватель по умолчанию для WinRM.

PS C:\Users\Daniel> winrm delete winrm/config/listener?address=*+transport=HTTP
WSManFault
    Message
        ProviderFault
            WSManFault
                Message = WS-Management does not allow changes to a listener created automatically by the group policy.
The policy "Allow Auto Configuration of listeners on WinRm service" would need to be set to "Not Configured" in order to
 create a new listener for same Address and Transport or to modify an already existing listener.

Error number:  -2144108406 0x8033808A
Cannot change GPO controlled setting.

Я зашел сюда на gpedit.msc. Оказывается, «Разрешить автоконфигурацию слушателей в службе WinRm» бесполезно переименовали в «Разрешить удаленное управление сервером через WinRM». Я установил для него значение «Не настроено» и попробовал еще раз.

PS C:\Users\Daniel> winrm delete winrm/config/listener?address=*+transport=HTTP
PS C:\Users\Daniel> winrm create winrm/config/Listener?Address=*+Transport=HTTP
ResourceCreated
    Address = http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
    ReferenceParameters
        ResourceURI = http://schemas.microsoft.com/wbem/wsman/1/config/listener
        SelectorSet
            Selector: Address = *, Transport = HTTP

PS C:\Users\Daniel> winrm e winrm/config/listener
Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = 10.10.90.6, 127.0.0.1, ::1, fe80::100:7f:fffe%11, fe80::5efe:10.10.90.6%13

PS C:\Users\Daniel> Enter-PSSession -ComputerName localhost
Enter-PSSession : Connecting to remote server localhost failed with the following error message : WinRM cannot process
the request. The following error with errorcode 0x80090322 occurred while using Negotiate authentication: An unknown
security error occurred.
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or
use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config. For more
information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName localhost
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (localhost:String) [Enter-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

PS C:\Users\Daniel>

По этой теме, вот текущая конфигурация моего GPO для WinRM

Политика локального компьютера> Конфигурация компьютера> Административные шаблоны> Компоненты Windows> Включено

  • Укажите уровень защиты токена привязки канала: не настроено
  • Запретить WinRM хранить учетные данные RunAs: не настроено
  • Запретить проверку подлинности Kerberos: не настроено
  • Запретить проверку подлинности согласования: не настроено
  • Включить совместимость HTTP Прослушиватель: не настроен
  • Включить совместимость Прослушиватель HTTPS: не настроен
  • Сообщение об ошибке изменилось. Когда я перехожу в средство просмотра событий, я получаю следующие две ошибки. Обратите внимание, что они оба изменились. Первый изменился кардинально, второй - менее радикально.

    General:
        Omitted for brevity. Same as per the "authFailureMessage" in the details below.
    Detail:
        <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
            <System>
                <Provider Name="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" /> 
                <EventID>161</EventID> 
                <Version>0</Version> 
                <Level>2</Level> 
                <Task>7</Task> 
                <Opcode>0</Opcode> 
                <Keywords>0x400000000000000a</Keywords> 
                <TimeCreated SystemTime="2016-08-18T00:37:41.784323600Z" /> 
                <EventRecordID>61452</EventRecordID> 
                <Correlation ActivityID="{0190DC40-F800-0000-79D1-5DB0DAF8D101}" /> 
                <Execution ProcessID="7888" ThreadID="8116" /> 
                <Channel>Microsoft-Windows-WinRM/Operational</Channel> 
                <Computer>FNZAS2.flow.net.nz</Computer> 
                <Security UserID="S-1-5-21-2875926586-1071052228-4104636349-1151" /> 
            </System>
            <EventData>
                <Data Name="authFailureMessage">WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Negotiate authentication: An unknown security error occurred. Possible causes are: -The user name or password specified are invalid. -Kerberos is used when no authentication method and no user name are specified. -Kerberos accepts domain user names, but not local user names. -The Service Principal Name (SPN) for the remote computer name and port does not exist. -The client and remote computers are in different domains and there is no trust between the two domains. After checking for the above issues, try the following: -Check the Event Viewer for events related to authentication. -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport. Note that computers in the TrustedHosts list might not be authenticated. -For more information about WinRM configuration, run the following command: winrm help config.</Data> 
            </EventData>
        </Event>
    
    General:
        WSMan operation CreateShell failed, error code 2150858909
    Details:
        <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
            <System>
                <Provider Name="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" /> 
                <EventID>142</EventID> 
                <Version>0</Version> 
                <Level>2</Level> 
                <Task>10</Task> 
                <Opcode>2</Opcode> 
                <Keywords>0x4000000000000002</Keywords> 
                <TimeCreated SystemTime="2016-08-18T00:37:41.784323600Z" /> 
                <EventRecordID>61454</EventRecordID> 
                <Correlation ActivityID="{0190DC40-F800-0000-7CD1-5DB0DAF8D101}" /> 
                <Execution ProcessID="7888" ThreadID="8116" /> 
                <Channel>Microsoft-Windows-WinRM/Operational</Channel> 
                <Computer>FNZAS2.flow.net.nz</Computer> 
                <Security UserID="S-1-5-21-2875926586-1071052228-4104636349-1151" /> 
            </System>
            <EventData>
                <Data Name="operationName">CreateShell</Data> 
                <Data Name="errorCode">2150858909</Data> 
            </EventData>
        </Event>
    

    ОБНОВЛЕНИЕ № 2

    Попытка очистить настройки WinRM и затем восстановить значения по умолчанию.

    Вывод Powershell по адресу: pastebin.com/E5wgXE1q

    Журналы событий Windows такие же, как созданные в Обновлении № 1.


    ОБНОВЛЕНИЕ № 3

    Использование Mer ' В выводе winrm / config в качестве руководства я просмотрел объекты групповой политики моих локальных компьютеров и сбросил все обратно на «Не настроено». Это дает мне вывод winrm / config, который соответствует выводу Мера.

    Я все еще не был в состоянии пройти, однако. Попробовал те же шаги очистки / сброса, что и в обновлении №2 на всякий случай, но это тоже не сработало.

    Вывод Powershell на pastebin.com/EuzyDR6d

    Вывод в журнале событий такой же, как и для Обновление 2.

    Попробует перезапустить сервер, чтобы увидеть, имеет ли это значение.


    ОБНОВЛЕНИЕ # 4

    Перезапуск сервера не исправлен. По-прежнему появляется то же сообщение об ошибке, что и в обновлении № 2.


    ОБНОВЛЕНИЕ № 5

    Хорошо. Это чушь.

    Все вышеперечисленные проблемы возникают на сервере, который мы назовем AS2.

    Я только что перешел на сервер AS1 и настроил удаленный PowerShell. Просто чтобы убедиться, что я не сойду с ума.

    • AS1: Enter-PSSession localhost> Successful
    • AS1: Enter-PSSession AS2> Successful
    • AS2: Enter-PSSession localhost> Failure
    • AS2: Enter -PSSession AS1> Успешно

    Раньше у меня были проблемы с переходом из AS2 на любой сервер. Но где-то по ходу дела я это исправил. Теперь проблема только localhost на AS2.

    Это кажется совершенно безумным. Почему AS2 не может удаленно к себе, если он явно рад принимать входящие соединения и может нормально выполнять исходящие соединения?


    ОБНОВЛЕНИЕ # 6

    Хорошо, новая информация: аутентификация CredSSP делает Работа. Кажется, это как-то связано с проверкой подлинности Negotiate на этом сервере, которая сломана.

    Я могу использовать это как основу обходного пути для того, что я пытаюсь сделать. Это все еще не объясняет, почему Negotiate, похоже, не работает на этом сервере.

    4
    задан 19 August 2016 в 08:45
    1 ответ

    Можете ли вы удалить существующий слушатель с:

    winrm delete winrm/config/listener?address=*+transport=HTTP
    

    И добавить новый с:

    winrm create winrm/config/Listener?Address=*+Transport=HTTP
    

    И, проверьте еще раз с:

    winrm e winrm/config/listener
    

    ListeningOn должен указывать ваши IP адреса, а не нулевой.

    .
    0
    ответ дан 3 December 2019 в 04:19

    Теги

    Похожие вопросы