none
Включение RDP через PowerShell RRS feed

  • Вопрос

  • Пытаюсь включить RDP через PowerShell. Выполняю следующие команды:

    $ts = get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices

    $ts.SetAllowTSConnections(1)

    В результате получаю такую ошибку:


    Exception calling "SetAllowTSConnections" : "Invalid operation "
    At line:1 char:26
    + $ts.SetAllowTSConnections <<<< (1)
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : WMIMethodException

    Если выполняю команду

    Set-WmiInstance -Class Win32_TerminalServiceSetting -Arguments @{AllowTSConnections=1} -namespace ROOT\CIMV2\TerminalServices

    То получаю такую ошибку:

    format-default : The following exception occurred while retrieving members: "Operation is not valid due to the current
    state of the object."
        + CategoryInfo          : NotSpecified: (:) [format-default], ExtendedTypeSystemException
        + FullyQualifiedErrorId : CatchFromBaseGetMembers,Microsoft.PowerShell.Commands.FormatDefaultCommand

     

    Подскажите пожалуйста что я делаю не так. ОС Windows 7 Professional x64 (в Windows XP подобный метод работает нормально). Заранее спасибо

    • Изменено simtox 11 января 2012 г. 11:59 Добавил версию ОС
    11 января 2012 г. 11:55

Ответы

  • Нашел в чем была проблема:

    1. Должен быть включен windows firewall

    2. На доменной машине также действовала политика по разрешению RDP (не думаю, что в этом проблема; надо еще потестировать)

    P.S. на машине вне домена действительно надо было открвать PS от имени администратора

    • Помечено в качестве ответа KazunEditor 11 января 2012 г. 13:53
    11 января 2012 г. 13:38

Все ответы

  • Запустите powershell,как Run As Administrator.

    11 января 2012 г. 12:00
    Отвечающий
  • Ничего не изменилось. Ошибки те же

    11 января 2012 г. 12:13
  • Ничего не изменилось. Ошибки те же


    Вывод покажите:
    ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
    


    и

     

    $ts.AllowTSConnections
    

    11 января 2012 г. 12:20
    Отвечающий
  • PS C:\Windows\system32> ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
    True
    PS C:\Windows\system32> $ts.SetAllowTSConnections


    MemberType          : Method
    OverloadDefinitions : {System.Management.ManagementBaseObject SetAllowTSConnections(System.UInt32 AllowTSConnections, System.UInt32 ModifyFirewallException)}
    TypeNameOfValue     : System.Management.Automation.PSMethod
    Value               : System.Management.ManagementBaseObject SetAllowTSConnections(System.UInt32 AllowTSConnections, System.UInt32 ModifyFirewallException)
    Name                : SetAllowTSConnections
    IsInstance          : True

    11 января 2012 г. 12:25
  • Странно конечно,но включите с помощью реестра:

    Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0


    Вы пробуете локально или на удаленном компьютере?
    • Изменено KazunEditor 11 января 2012 г. 12:39
    11 января 2012 г. 12:33
    Отвечающий
  • Через реестр не интересно ибо требует перезагрузки. Хочется через WMI.

    Я вообще новичек в Powershell и из текста ошибок совершенно не понимаю на что мне жалуется ПО.

    Я попробовал также выполнить это на машине вне домена (win 7) и на машине с win server 2008 r2 - везде одни и те же ошибки.

    Скажите, Kazun, у вас эти команды работают корректно?

    • Изменено simtox 11 января 2012 г. 12:45
    11 января 2012 г. 12:43
  • PS #  $ts = get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
    PS #  $ts.SetAllowTSConnections(1)
    
    
    __GENUS          : 2
    __CLASS          : __PARAMETERS
    __SUPERCLASS     :
    __DYNASTY        : __PARAMETERS
    __RELPATH        :
    __PROPERTY_COUNT : 1
    __DERIVATION     : {}
    __SERVER         :
    __NAMESPACE      :
    __PATH           :
    ReturnValue      : 0
    
    
    

    Да у меня прекрасно отрабатывают эти команды.

     

    11 января 2012 г. 12:47
    Отвечающий
  • А если через wmic в cmd попробовать:

    wmic RDToggle where ServerName='%computername%' call SetAllowTSConnections 1
    

    11 января 2012 г. 12:52
    Отвечающий
  • Нашел в чем была проблема:

    1. Должен быть включен windows firewall

    2. На доменной машине также действовала политика по разрешению RDP (не думаю, что в этом проблема; надо еще потестировать)

    P.S. на машине вне домена действительно надо было открвать PS от имени администратора

    • Помечено в качестве ответа KazunEditor 11 января 2012 г. 13:53
    11 января 2012 г. 13:38