Python-Pywinrm使用powershell控制远程窗口的AD,从本地端返回不同的结果



当我对远程窗口(AD服务器(使用pywinrm时,会话返回不一致的结果,如下所示。

import winrm
host = 'XXXX'
domain = 'XXXX'
user = 'XXXX'
password = 'XXXX'
session = winrm.Session(host , auth=('{}@{}'.format(user,domain), password), transport='ntlm',
server_cert_validation='ignore')
ps_script1 = """Get-Acl"""
ps_script2 = """Import-Module ActiveDirectory"""
ps_script3 = """Import-Module ActiveDirectory
Get-ADUser -Filter 'Name -like "XXXX"'......'"""
result1 = session.run_ps(ps_script1)
result2 = session.run_ps(ps_script2)
result3 = session.run_ps(ps_script3)

在结果1中,它工作良好,并返回"0";正确的结果";。但在结果2中,它的返回是"0";初始化"时出错;

同样在结果3中"quot;无法联系服务器。这可能是因为该服务器不存在、当前已关闭或没有运行Active Directory Web服务。'。Get-ADUser:无法联系服务器。这可能是因为此服务器不存在,它当前已关闭,或者它没有Active Directory"quot;

但当我直接登录windows时,所有powershell命令都能很好地工作。

我添加凭证并解决此问题。

ps_script = """[string]$userName = '"""+winuser+"""'
[string]$userPassword = '"""+password+"""'
[SecureString]$secureString = $userPassword | ConvertTo-SecureString -AsPlainText -Force
[PSCredential]$credentialObejct = New-Object System.Management.Automation.PSCredential -ArgumentList $userName, $secureString

[your PS code] -Properties * -credential $credentialObejct)"""

最新更新