簡體   English   中英

invoke-command 從 powershell 工作,從 cmd window 調用 powershell 不工作

[英]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.

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