首页 > 解决方案 > 如何在python中运行powershell脚本

问题描述

'''$Session = New-Object -ComObject "Microsoft.Update.Session"

$Searcher = $Session.CreateUpdateSearcher()

$historyCount = $Searcher.GetTotalHistoryCount()

$Result = $Searcher.QueryHistory(0, $historyCount) | 选择对象日期,

@{name="操作"; 表达式={switch($_.operation)

{

1 {"安装"};

2 {"卸载"};

3 {“其他”}

}}},

@{name="状态"; 表达式={switch($_.resultcode)

{

1 {“进行中”};

2 {“成功”};

3 {“错误成功”};

4 {“失败”};

5 {“中止”}

}}},

@{name="更新"; 表达式={IF($_.Title.tostring() -match "(.*?)"){$matches[0].replace('(','').replace(')','')} }},

标题 $Result | 其中{$_.Date -gt (Get-Date).AddDays(-14)} | 排序对象日期 | 选择日期、操作、状态、更新、标题 | Export-Csv -NoType "$Env:userprofile\Desktop\WindowsUpdates.csv"| 格式表

这是保存到记事本的脚本我想使用 python 获取输出

导入子流程

p = subprocess.run('F:\getwindowupdate.ps1', shell=True)

打印(p.stdout)

这只是打开记事本文件如何使用python执行这个powershell脚本

标签: pythonpowershell

解决方案


您可以将命令传递给 PowerShell 并在 python 脚本中检索输出。

步骤 1 编写 PowerShell 脚本

    Write-Host 'Hello, World!'

将其保存为 script.ps1

PS:这将输出

    Hello, World!

第 2 步 编写一个 python 脚本并从那里调用您的 PowerShell 脚本并检索输出

    import sys
    import subprocess

    cmd = ["PowerShell", "-ExecutionPolicy", "Unrestricted", "-File", ".\\script.ps1"]
    ec = subprocess.call(cmd)
    print("Powershell returned: {0:d}".format(ec))

这将输出:

    Hello, World!
    Powershell returned: 0

推荐阅读