遇到从Python中执行PowerShell脚本的问题。
Python本身很简单,但在调用和错误时它似乎传入\n
。
['powershell.exe -ExecutionPolicy Bypass -File', '$Username = "test";\n$Password = "password";\n$URL
这是完整的代码:
import os
import subprocess
import urllib2
fetch = urllib2.urlopen('https://raw.githubusercontent.com/test')
script = fetch.read()
command = ['powershell.exe -ExecutionPolicy Bypass -File', script]
print command #<--- this is where I see the \n.
#\n does not appear when I simply 'print script'
所以我有两个问题:
\n
?$script
中的脚本?答案 0 :(得分:2)
- 如何在不写入磁盘的情况下将脚本正确存储为变量,同时避免使用
醇>\n
?
这个问题基本上是this one的副本。通过您的示例,可以简单地删除换行符。更安全的选择是用分号替换它们。
script = fetch.read().replace('\n', ';')
- 从Python中调用PowerShell的正确方法是什么,以便运行存储在
醇>$script
中的脚本?
您的命令必须作为数组传递。此外,您无法通过-File
参数运行一系列PowerShell语句。请改用-Command
:
rc = subprocess.call(['powershell.exe', '-ExecutionPolicy', 'Bypass', '-Command', script])
答案 1 :(得分:0)
我相信这种情况正在发生,因为您正在打开PowerShell并且它会以特定方式自动格式化。
您可以执行一个通过命令输出的for循环,并在没有/ n的情况下打印。