问题 运行 PowerShell 命令与 Python 脚本运行手册(Azure 自动化帐户)中的子进程库

Trouble running PowerShell command with subprocess library in Python script runbook (Azure automation account)

我是 Azure 自动化的新手,有一个 python 脚本 运行 在本地机器上没问题。脚本 运行 是一个 PowerShell 命令,用于获取登录日志,并在写入存储帐户 table 之前对它们进行一些字符串解析。我能够通过自动化帐户中的“Python Packages”blade 安装脚本的所有依赖项。有没有办法在某处添加 powershell.exe 以便子进程库可用于 运行 PowerShell 命令?或者,是否有可以导入的库,以便能够 运行 PowerShell 命令或从 Azure AD 获取登录日志而无需直接使用 powershell.exe 文件?

此外,Microsoft.Powershell.Core 被添加到自动化帐户的模块中。我只是使用了错误的文件名,应该使用 powershell.exe 以外的名称吗?您是否必须安装其他模块,或者我引用的模块有误?

这是脚本的相关部分:

import subprocess
import sys
import json
import azure.core
from azure.core.credentials import AzureNamedKeyCredential 
from azure.data.tables import TableServiceClient, TableClient 

data = subprocess.check_output(["powershell.exe", "Connect-AzureAD -AccountId placeholder@placeholder.com \n Get-AzureADAuditSignInLogs"]).decode(sys.stdout.encoding)

这会引发 powershell.exe 的“FileNotFound”错误。那么,在 Azure 自动化 运行 书籍的上下文中,您如何 运行 使用子进程库执行 powershell 命令?非常感谢任何想法。非常感谢

我已经在我的环境中测试过

如果我在我的 python 脚本中使用 subprocess 到 运行 PowerShell 命令

,我会得到和你一样的错误

这是因为子进程模块无法找到 powershell.exe 路径

对于解决方法,您可以使用以下任一选项:

  1. 您可以使用 PowerShell 脚本代替 python 脚本
  2. 您可以在 python 代码中使用 MS Graph API 而不是 PowerShell 命令