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

问题描述 投票:0回答:2

我用pywinrm远程windows(AD服务器)时,session返回不一致的结果,如下

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)

在 result1 中,它运行良好并返回“正确的结果”。但是在result2中,它的返回是“Error initializing”

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

但是当我直接登录 Windows 时,所有 powershell 命令都运行良好。

python powershell active-directory winrm
2个回答
0
投票

我添加 Credential 并解决这个问题。

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)"""

0
投票

我也在尝试连接 Windows VM(Azure),但出现错误 最大重试次数超过 url:/wsman(由 ConnectTimeoutError(,'连接到 .... 超时。(连接超时 = 30)'))

你在远程机器上配置了什么吗?

© www.soinside.com 2019 - 2024. All rights reserved.