我已在 Linux 设备上安装了 PowerShell,并且需要访问 ExchangeOnlineManagement 模块。 我想使用 python 脚本来自动管理 Powershell Exchange 上的任何操作。 但是,我可以连接 PowerShell Exchange,但没有找到填充 PowerShell Exchange 模块请求的输入的方法。
这是我的代码:
import subprocess
import sys
def run(cmd):
completed = subprocess.run(["/xxxx/xxxx/xxxx/xxxx/pwsh", "-Command", cmd], stdout=True, stderr=True)
return completed
if __name__ == '__main__':
connect_command = "Connect-ExchangeOnline -CertificateFilePath '/XXX/XXX/XXX/certificate.pfx' -CertificatePassword (Get-Credential).password -AppID 'XXXXXXXXXXXXXXXXXXXXXX' -Organization 'myorg.onmicrosoft.com'"
connect_info = run(connect_command)
if connect_info.returncode != 0:
print("An error occured: %s", connect_info.stderr)
else:
print("Connected")
此时,PowerShell 提示我:
我尝试用“sys.stdout.write('myuser')”填充它,但我的脚本正在等待我的输出并且不读取指令。
有人知道如何管理这个吗?
避免这种情况的一种方法是这样做:
“$password = ConvertTo-SecureString 'root' -AsPlainText -Force; Connect-ExchangeOnline -CertificateFilePath '/XXX/XXX/XXX/certificate.pfx' -CertificatePassword $password -AppID 'XXXXXXXXXXXXXXXXXXXXX' -Organization 'myorg.onmicrosoft.com ''
分号允许我将两个命令合二为一...我可以将我的密码放在一个变量中,然后将其传递到我的参数中。 我想这对于了解 PowerShell 的人来说是显而易见的......:)
但是,当我想断开与会话的连接时,我仍然需要键入输入。有人有想法吗?