Командлеты Pywinrm и Active Directory PowerShell

Я столкнулся со странной проблемой с моим кодом Python, который использует модуль pywinrm. Позвольте мне немного объяснить. У меня есть сервер Linux, на котором я запускаю следующий скрипт Python:

import winrm

"""Create security group"""
s = winrm.Session('https://servername:5986/wsman', 
   auth=(None, None), transport='kerberos', 
   server_cert_validation='ignore')

name = "test"
path = "OU=Security Groups,DC=test,DC=org"

ps_command = 'New-ADGroup -Name "{0}" 
-GroupScope Universal 
-GroupCategory Security 
-Path "{1}" -Server ldap.test.org'.format(name, path)

r = s.run_ps(ps_command)

if r.status_code == 0 :
    print(r.std_out.decode('UTF-8'))
else:
    print(r.std_err('UTF-8'))

Этот будет подключаться к прослушивателю HTTPS сервера Windows (не DC), который затем запустит команду создания группы.

Когда я запускаю командлет AD непосредственно на сервере Windows, он отлично работает, и группа безопасности создается в AD. Но через скрипт у меня есть следующий ответ:

$ python3 test_winrm.py
New-ADGroup : Unable to contact the server. This may be because this server does not exist, it is currently down,
or it does not have the Active Directory Web Services running.
At line:1 char:1
+ New-ADGroup -Name "test" -GroupScope Universal -GroupCategory Security
-Path "O ...
+ 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
+ CategoryInfo          : ResourceUnavailable: (:) [New-ADGroup], ADServer
DownException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirector
y.Management.Commands.NewADGroup

Еще хочу заметить, что если я заменю текущую команду PowerShell на базовую (например, создание папки на сервере Windows), то она работает.

Таким образом, он работает на сервере Windows локально, но не с командлетами AD, даже если установлен RSAT... У вас есть предыдущий опыт в этой теме?

Спасибо за помощь.


person Vran    schedule 25.07.2017    source источник
comment
Похоже на проблема с двойным прыжком.   -  person BenH    schedule 25.07.2017


Ответы (1)


Большое спасибо @BenH за вашу помощь, вы правильно поняли источник моей проблемы, и после нескольких дней / головных болей я наконец нашел решение здесь: https://github.com/diyan/pywinrm/issues/58. При использовании kerberos и pywinrm необходимо установить kerberos_delegation=True для поддержки нескольких переходов.

person Vran    schedule 27.09.2017