[英]invoke-command works from powershell, does not work from a cmd window invoking powershell
你好,新年快樂,
我正在嘗試調用從 powershell 到服務器的命令。 為此,我可以在 PSS_invoke.ps1 腳本中編寫以下代碼行,並在 powershell session 中使用$ 'path/to/PSS_invoke1.ps1'
調用它。它有效。 我還可以將腳本的每一行提交到 powershell 控制台,它也可以工作。
$session = New-PSSession mycomputer
Invoke-Command -Session $session -scriptBlock { start-job -scriptBlock { path\to\stata\stataMP-64.exe -e do path\to\mycommand.do } }
現在,假設我想打開一個 cmd window 然后調用一個將調用命令的 powershell。 我這樣做是因為我想從一個只能調用 cmd 但不能調用 powershell 的程序運行這個腳本。在 cmd.exe window
powershell < "\\path\to\PSS_invoke.ps1"
它不運行命令:我在 Python 中嘗試了同樣的操作,但我也沒有得到結果:
import subprocess
psInvoke = subprocess.Popen(['powershell',
'-ExecutionPolicy',
'unrestricted',
'path\to\PSS_invoke.ps1',
], cwd=os.getcwd())
result = psInvoke.wait()
我沒有得到任何回應,無論是來自 Python 還是來自 cmd。當我不使用 Invoke-command(並且在本地工作)時它起作用。
我沒有錯誤信息。 只是我的腳本沒有運行。
我在這里缺少什么嗎?
謝謝
嘗試使用-File
參數:
powershell -File "\\path\to\PSS_invoke.ps1"
如果您想直接使用腳本塊,還有一個-Command
參數。
您可以在此處閱讀有關 PowerShell.exe arguments 的信息但是這些適用於 PowerShell 5.1,我沒有看到 7.1 的文檔,但會四處看看。
感謝您的及時答復。 正如您所建議的,我在 cmd 中嘗試使用以下命令:
powershell -File "\\path\to\PSS_invoke.ps1"
它沒有啟動我的 stata session。但是,我也嘗試更改啟動一個簡單的 function 的腳本......有效......我想問題出在
$s = New-PSSession -ComputerName myserver
Invoke-Command -Session $s -scriptBlock { Set-Content -Path 'path*\to\test\test.txt' -Value 'Hello world'}
所以我想問題出在腳本的-scriptBlock { start-job -scriptBlock { path\to\stata\stataMP-64.exe -e do path\to\mycommand.do } }
部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.