将 Python 变量传递到 Powershell 脚本

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

我希望在不使用参数的情况下将 Python 脚本中的变量传递到 Powershell 脚本的变量中。

var_pass_test.py

import subprocess, sys

setup_script = 'C:\\Users\\user\\Desktop\\Code\\Creation\\var_pass_test.ps1'

test1 = "Hello"

p = subprocess.run(["powershell.exe", 
          setup_script], test1,
          stdout=sys.stdout)

var_pass_test.ps1

Write-Host $test1

如何执行此操作,以便 Powershell 脚本从 Python 脚本接收

test1
的值?这可以通过
subprocess
库实现吗?

python powershell scripting subprocess
2个回答
4
投票
  • 要将参数逐字传递到 PowerShell CLI,请使用

    -File
    选项:首先传递脚本文件路径,然后传递要传递给脚本的参数。

  • 在 Python 中,将构成 PowerShell 命令行的 all 参数作为第一个数组值参数的一部分传递:

import subprocess, sys

setup_script = 'C:\\Users\\user\\Desktop\\Code\\Creation\\var_pass_test.ps1'

test1 = "Hello"

p = subprocess.run([
            "powershell.exe", 
            "-File", 
            setup_script,
            test1
          ],
          stdout=sys.stdout)

0
投票

您还可以使用 f 字符串格式的变量将变量发送到 PowerShell 实例。

import subprocess
from time import sleep

var1 = 'Var1'
var2 = 'var2'

# List of values 
list_tab = ['389', '394', '399', '404', '409', '415', '444', '449', '495']

# Open PS instance for each value
for times in list_tab:
    # Use f string to send variables to PS
    subprocess.call(f'start C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -noexit -File path_to_file.ps1 {var1} {var2}', shell=True)
© www.soinside.com 2019 - 2024. All rights reserved.