不幸的是,我找不到太多的信息,但是我希望从我编写的python文件中运行powerShell脚本。我希望用户实际看到powerShell脚本正在运行,并且用户可以从python输入powerShell脚本所需的输入。我正在使用pyCharm作为IDE。
当我运行脚本来调用此powerShell脚本时,它给了我这个错误:
File "C:\TestAutomation\eFuse\eFuse.ps1", line 19
SyntaxError: Non-ASCII character '\xc2' in file C:\Test\eK\eK.ps1 on line 19, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
这是代码的相关部分:
elif switch_result == "eTool":
subprocess.call(['python', 'C:\\TestAutomation\\eFuse\\eFuse.ps1'], stdout=sys.stdout)
此elif语句是其他使用subproccess模块运行其他python文件的if / elif语句的一部分,但是由于某种原因,我无法运行此powerShell文件。任何建议表示赞赏。谢谢
答案 0 :(得分:0)
首先,您应该已经知道.py
文件的解释器是python.exe
因此,很容易理解.ps1
文件的解释器是powershell.exe
,而不是python.exe
我只是复制并粘贴您的代码,您的代码应如下所示
subprocess.call('powershell.exe -File "C:\\TestAutomation\\eFuse\\eFuse.ps1"', stdout=sys.stdout)
关于powershell.exe -?
答案 1 :(得分:0)
您可以执行以下操作,以从python提供用户到PS(powershell)脚本的输入:
1)创建参数化的powershell脚本
2)在python中输入并将其设置为PS脚本参数。
3)使用给定的参数运行/执行脚本。
以下是使用param从python运行powershell脚本的示例。它是python代码:
*希望您有带参数的PS脚本。
handlePersonId = (event, index) =>{
this.setState(({ personData }) => {
/* Extract id from event */
const id = event.target.value;
/* Clone person array */
const cloneArray = [].concat(personData);
/* Iterate index range from 0 to check for invalid person
entries and add an empty object if required */
for(let i = 0; i < index; i++) {
cloneArray[i] = cloneArray[i] || {};
}
if(cloneArray[index]) {
/* Update id of person at index if person data already
exists */
cloneArray[index].id = id;
}
else {
/* Otherwise create a new person object at index */
cloneArray[index] = {
id,
name:'',
age:'',
location:''
}
}
/* Return new state */
return { personData : cloneArray };
});
}
您可以看到python的输出(如果存在)(如果powershell脚本中没有错误。您将不会从最后一行获得任何输出)