Вопрос по windows – Не могу использовать Get-Service –ComputerName на удаленном компьютере

5

У меня есть окно установки Windows 2003 с виртуальным блоком, и я не могу PowerShell работать с ним.

Я пытаюсь это на моей машине Windows 7

Get-Service –ComputerName myserver

Я вернусь

Get-Service : Cannot open Service Control Manager on computer 'myserver'. This operation might require other privileges.
At Script1.ps1:2 char:4
+ gsv <<<<  -cn myserver
    + CategoryInfo          : NotSpecified: (:) [Get-Service], InvalidOperationException
    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetServiceCommand

При поиске вокруг я обнаружил, что должен попробоватьEnable-PSRemoting.

Я сделал это, и теперь, когда я пытаюсь использовать это, я получаю

WinRM already is set up to receive requests on this machine. WinRM already is set up for remote management on this machine.

Тем не менее, я все еще получаю ту же ошибку. Это потому, что я использую виртуальную машину? Я настроил виртуальную ОС на свой домен и даже могу использовать свои учетные данные AD для входа в систему.

Я могу получить другую информацию от него.

Так что я не могу подключиться к нему с помощью powershell.

Брандмауэр активен на сервере? Вы пробовали с выключенным брандмауэром? CB.
Я брандмауэр выключен. Я фактически выключил их на обоих компьютерах. chobo2
Принятый ответto this question может быть какой-то помощи Ken White
Я не уверен, что перешел к этой статье, но получаю & quot; Сервер RPC недоступен & quot; все, что я пытался, так и не смог избавиться от этой ошибки. chobo2
У меня та же проблема, если я запускаю powershell с пользователем без учетных данных администратора удаленного сервера. Пытались ли вы запустить powershell с учетными данными администратора домена или, по крайней мере, указать «администраторы»? локальная группа удаленного сервера вашего домена пользователя? это сделает свое дело. CB.

Ваш Ответ

5   ответов
0

Опираясь на блестящий ответ @scusi Маркуса здесь:

Допустим, у меня есть непривилегированный / ограниченный пользователь, которого называют «пользователь1»; кто хочет удаленное взаимодействие powershell (v2 +) с клиентского компьютера A на целевой сервер B.

шаги:

  1. From elevated powershell prompt on targetserver B, run enable-psremoting. Accept several Y/N dialog confirmations or else run with -force switch.
  2. In same elevated prompt as step 1, Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
  3. In the resulting dialog, add "user1". Read privileges should be sufficient unless you are planning on remotely manipulating services, in which case you will want Full Control.
  4. On targetserver B, from an elevated (non-powershell) prompt or as an administrator, run sc sdshow scmanager. Copy the SDDL output. May look something like this: D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

UPDATE: If we add the limited user to the target computer's Remote Management Users group, we can add (A;;LCRPWPDTLO;;;RM) to the D: portion of the above SDDL string, and skip steps 5 and 6 below.

  1. Determine the SID of the underprivileged user account (in our case, "user1"). (Hint: try wmic useraccount where name='user1' get sid)
  2. Insert the following text into the output we copied in step 5: (A;;KA;;;*SID*) where *SID* is the SID of the user determined in step 5. Insert it somewhere in a place before the S: part of the SDDL string retrieved in step 4. So now you should have a string looking something like this: D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;S-1-5-21-4233383628-1788409597-1873130553-1161)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
  3. On targetserver B, run sc sdset scmanager followed by our new modified SDDL string. So the entire command would look something like this: sc sdset scmanager D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;S-1-5-21-4233383628-1788409597-1873130553-1161)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

Теперь у вас должна быть возможность удаленного доступа к диспетчеру управления службами на удаленном сервере, когда вы вошли на клиентский компьютер A как «user1».

На клиентском компьютере A вы можете обнаружить, что при запускеGet-Service –ComputerName remoteserver не все услуги перечислены. Возможно, вам придется повторить описанный выше процесс (начиная с шага 4) для конкретной службы, к которой вам нужен удаленный доступ, но которая не указана в вашемGet-Service вывод на клиентский компьютер А. Например, еслиsqlserveragent служба не указана в списке (но вы знаете, что она присутствует на целевом сервере), вы снова должны войти на целевой сервер B и выполнитьsc sdshow но на этот раз не дляscmanager но дляsqlserveragent сервис, такsc sdshow sqlserveragent, Вы снова получите некоторый вывод SDDL, которым нужно будет манипулировать, как указано выше. На данный момент, возможно, стоит узнать больше о SDDL (Google это - этоссылка на сайт было полезно для меня), с основнымcaveat следить заD: а такжеS: части строки SDDL и убедитесь, что вы не возитесь сS: часть.

Error: User Rate Limit ExceededConvertFrom-SDDLString <SDDLstring>
2

Если это все еще важно, вот мой обходной путь:

У меня есть непривилегированный пользователь под названием «usser» кто хочет удаленное взаимодействие powershell (v2) от клиента A к серверу B.

шаги:

  1. enable-psremoting on Targetserver B as admin
  2. Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI on Targetserver B as admin
  3. Add "usser" with full privileges

Теперь начинается захватывающая часть:

  1. sc sdshow scmanager on Targetserver B as admin
  2. Copy the SDDL output
  3. sc sdset scmanager (f.e.:)"D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)" , in the Output you have to fill after this part (A;;CCLCRPWPRC;;;SY) this = (A;;KA;;;SID)
  4. SID stands of course for the SID of the unprivileged "usser"-user
  5. when everything should be fine, it will similiar looks like this :

    D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;S-1-5-21-4233383628-1788409597-1873130553-1161)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

Надеюсь, вам понравится этот маленький, но сложный обходной путь.

0

Я знаю, что это не идеальный ответ на этот вопрос, но у меня была похожая проблема, когда я пытался использовать PowerShell для взаимодействия с Windows 7. Оказывается, WMI не был установлен с родной PSv2, которая поставляется с Win7.

Как только я установил v3 как часть пакета WMI 3.0, проблема решилась сама собой. Я предлагаю убедиться, что на вашем сервере запущены все соответствующие службы WMI. Если у вас нет конфликтов, я также рекомендую перейти на WMI 3.0.

1

Для просмотра и управления сервисами требуются права администратора на целевом компьютере.

Я смог продублировать ваше сообщение об ошибке при попытке запуститьGet-Service -ComputerName MyServer при входе в систему как учетная запись пользователя, которая не имеет прав администратора на данный сервер.

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

msgoodies: использование сеанса PS без административных разрешений

Error: User Rate Limit Exceeded chobo2
Error: User Rate Limit Exceedednet localgroup AdministratorsError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded chobo2
7

С PowerShell V2 у вас есть два подхода к удаленным командам.

Commands with built-in remoting :

Небольшой набор команд в PowerShell v2 имеет-ComputerName параметр, который позволяет указать целевой компьютер для доступа.

Get-Process
Get-Service
Set-Service

Clear-EventLog
Get-Counter
Get-EventLog
Show-EventLog
Limit-EventLog
New-EventLog
Remove-EventLog
Write-EventLog

Restart-Computer
Stop-Computer

Get-HotFix

Эти команды делают свое собственное удаленное взаимодействие либо потому, что базовая инфраструктура уже поддерживает удаленное взаимодействие, либо они обращаются к сценариям, которые имеют особое значение для управления системой. Они построены на верхней части DCOM, и с точки зрения доступа их можно использовать, когда вы можете установить сеанс с удаленным компьютером с помощью таких команд, какNET.exe или жеPSExec.exe.

Вы пытаетесь использовать один из них, и у вас есть проблема с учетными данными (-cred параметр), поскольку ваши учетные данные токена не могут быть использованы для установления сеанса администратора с удаленной машиной.

The PowerShell remoting subsystem :

Прежде чем вы сможете использовать удаленное взаимодействие PowerShell для доступа к удаленному компьютеру, служба удаленного взаимодействия на этом компьютере должна быть явно включена. Вы делаете это с помощьюEnable-PSRemoting Командлет. Если вы работаете в рабочей группе, вам также нужно разрешить серверу входить на ваш клиентский компьютер с помощью этой команды (на вашем клиентском компьютере в качестве администратора):

Set-Item WSMan:\localhost\Client\TrustedHosts *

Затем вы будете использоватьNew-PSSession Командлет (с-computername а также-credentials) создать объект сеанса. затемInvoke-Command (с-session а также-scriptblockКомандлет) позволяет удаленно вызывать блок скриптов на другом компьютере. Это базовый элемент для большинства функций удаленного взаимодействия. Вы также можете использовать Enter-PSSession, чтобы установить интерактивную (похожую на SSL) командную строку PowerShell с сервером.

Полезная ссылка:Руководство Layman по удаленному взаимодействию с PowerShell 2.0


Проверьте это:

$sess = New-PSSession -ComputerName myServer-Credential (Get-Credential)
Invoke-Command -Session $sess -ScriptBlock {get-service}
...
Remove-PSSession -Session $sess
Error: User Rate Limit Exceeded chobo2
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded chobo2
Error: User Rate Limit Exceeded chobo2
Error: User Rate Limit Exceeded chobo2

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