首页 > 解决方案 > invoke-command 从 powershell 工作,不能从调用 powershell 的 cmd 窗口工作

问题描述

你好,新年快乐,

我正在尝试从 powershell 调用命令到服务器。为此,我可以在 PSS_invoke.ps1 脚本中编写以下代码行,并$ 'path/to/PSS_invoke1.ps1'在 powershell 会话中调用它。有用。我还可以将脚本的每一行提交到 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 窗口,然后调用一个将调用命令的 powershell。我这样做是因为我想从一个只能调用 cmd 而不能调用 powershell 的程序运行这个脚本。在 cmd.exe 窗口中

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 (并且在本地工作)时它可以工作。

我没有错误消息。只是我的脚本没有运行。

我在这里有什么遗漏吗?

谢谢

标签: pythonpowershellinvoke-command

解决方案


感谢您的及时答复。正如您所建议的,我尝试在 cmd 中使用以下命令:

powershell -File "\\path\to\PSS_invoke.ps1"

它没有开始我的 stata 会话。但是,我也尝试更改启动简单功能的脚本....哪个有效...我想问题出在

$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 } }出在脚本的一部分。


推荐阅读