如何使用 Python 脚本填充 PowerShell 输入?

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

我已在 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 提示我:

Prompt username

我尝试用“sys.stdout.write('myuser')”填充它,但我的脚本正在等待我的输出并且不读取指令。

有人知道如何管理这个吗?

python python-3.x powershell
1个回答
0
投票

避免这种情况的一种方法是这样做:

“$password = ConvertTo-SecureString 'root' -AsPlainText -Force; Connect-ExchangeOnline -CertificateFilePath '/XXX/XXX/XXX/certificate.pfx' -CertificatePassword $password -AppID 'XXXXXXXXXXXXXXXXXXXXX' -Organization 'myorg.onmicrosoft.com ''

分号允许我将两个命令合二为一...我可以将我的密码放在一个变量中,然后将其传递到我的参数中。 我想这对于了解 PowerShell 的人来说是显而易见的......:)

但是,当我想断开与会话的连接时,我仍然需要键入输入。有人有想法吗?

enter image description here

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