我希望在不使用参数的情况下将 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
库实现吗?
要将参数逐字传递到 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)
您还可以使用 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)