簡體   English   中英

從Python調用時將參數傳遞給PowerShell腳本

[英]pass parameter to PowerShell script when calling from Python

我想從python調用powershell腳本並將參數傳遞給它

Powershell函數頭在這里列出:

Function Invoke-Neo4j
{
  [cmdletBinding(SupportsShouldProcess=$false,ConfirmImpact='Low')]
  param (
    [Parameter(Mandatory=$false,ValueFromPipeline=$false,Position=0)]
    [string]$Command = ''
  )

Python-如何將參數$ Command ='start'從python傳遞給函數? 我似乎無法正常工作。

import subprocess
cmd = ['powershell.exe', '-ExecutionPolicy', 'RemoteSigned', '-File',
       'C:\\PathName\\Invoke-Neo4j.ps1']
returncode = subprocess.call(cmd)
print(returncode)

我無法從Python使用Powershell命令。 我實際上找到了一個.bat文件,該文件具有有效的命令。 我剛剛插入了“ start”參數,我從python調用了bat文件。 它像一種魅力。 這不是最佳選擇,但可以為我完成工作。

SETLOCAL
Powershell -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -Command "try { Unblock-File -Path '%~dp0Neo4j-Management\*.*' -ErrorAction 'SilentlyContinue' } catch {};Import-Module '%~dp0Neo4j-Management.psd1'; Exit (Invoke-Neo4j 'start')"
EXIT /B %ERRORLEVEL%

在PowerShell或Python中運行僅定義函數但不調用它的腳本,除了定義函數外沒有其他作用。 該腳本需要包含對該函數的特定調用。 在您的情況下,您最好將邏輯放在腳本的頂層,而不是放在函數內部,然后調用該函數。 看起來像:

[cmdletBinding(SupportsShouldProcess=$false,ConfirmImpact='Low')]
param (
    [Parameter(Mandatory=$false,ValueFromPipeline=$false,Position=0)]
    [string]$Command = ''
)
# rest of code not surrounded by { }
exit 0

像最初一樣從Python調用修改后的腳本,它應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM