使用pywinos包执行run_cmd命令时出现两类报错如何解决?
报错原因及解决方案
第一类报错:TypeError: expected string or bytes-like object
- 报错原因:pywinos底层依赖winrm库实现Windows命令执行能力,WinOSClient实例化时如果未显式传入
host参数,该参数默认值为None。winrm初始化阶段会尝试用正则表达式匹配host格式,None不属于字符串/字节类型,直接触发类型错误。 - 解决方案:实例化WinOSClient时必须显式传入
host参数,本地执行填127.0.0.1,远程执行填目标机器的IP地址或域名即可。
第二类报错:winrm.exceptions.InvalidCredentialsError: auth method plaintext requires a username
- 报错原因:winrm默认使用明文认证方式执行命令,无论本地还是远程调用,都需要提供合法的Windows系统用户名、密码作为认证凭证,缺少凭证就会触发该认证错误。
- 解决方案:
- 实例化WinOSClient时补充传入有效用户名、密码参数,本地执行就填当前Windows系统的登录凭证,示例代码如下:
from pywinos import WinOSClient tool = WinOSClient( host='127.0.0.1', username='你的Windows用户名', password='你的Windows登录密码', logger_enabled=False ) response = tool.run_cmd(command='whoami')- 若执行时报WinRM服务相关错误,需要先以管理员身份打开CMD,执行以下命令开启本地WinRM服务:
winrm quickconfig -force
内容的提问来源于stack exchange,提问作者Mac
相关产品推荐
相关产品推荐

