gpt4 book ai didi

powershell - 从 cmd 运行 PowerShell 方法,不要等待它的返回

转载 作者:行者123 更新时间:2023-12-03 20:57:38 27 4
gpt4 key购买 nike

在 cmd 我试图运行 Method1这是在 PowerShell 脚本中,script1 .Method1是一个需要几个小时的方法,我只是想着火了就忘记了。

以下对我有用:

c:\temp> powershell
PS c:\temp> . .\script1.ps1;Method1

当我执行上述几行时,只要我保持 PS 的 CMD 处于打开状态,一切都可以正常工作。一旦我关闭 PS 窗口,它就会杀死 Method1 .

所以实际上我希望从 cmd 中,在一行中,以某种方式使 Method1在不依赖 PowerShell 窗口的情况下工作,也许创建一个新进程..我不太确定。

我试过了:
c:\temp> cmd /c powershell . .\script1.ps1;Method1

它运行了几秒钟,但是当 cmd 关闭时,然后 Method1也终止。

我也试过
c:\temp>cmd /c powershell -noexit "& { . .\script.ps1;Method1 }"

同样,一旦我这样做,它就会起作用。但是,打开了一个 PowerShell 窗口,如果我关闭它,它将终止 Method1 .

在你的帮助下,我试过:
c:\temp> cmd /c powershell start-process cmd /c powershell . .\script1.ps1;Method1

但我得到一个异常(exception):

Start-Process : A positional parameter cannot be found that accepts argument 'powershell'.



但是,我仍然无法使其工作。

最佳答案

或者,如果您想要一个纯 PowerShell 解决方案(请注意,这需要以管理员身份运行):

Invoke-Command LocalHost -Scriptblock $script -InDisconnectedSession
InDisconnectedSession switch 在单独的 PowerShell session 中运行它,当您关闭 PowerShell 窗口时,该 session 不会终止。您也可以使用 Get-PSSession并将 session 传递给 Enter-PSSession在执行期间或之后与其进行交互。请记住,在这种状态下,如果您关闭窗口,它会-将-杀死它,因此您需要使用 Exit-PSSession让它活着。

但是有一个问题——你不能做任何远程任务,至少不容易。这招致了“双跳”的愤怒,您远程连接到一台计算机(在这种情况下是您自己的计算机),然后再到另一台计算机,为了安全起见,PowerShell 拒绝将任何凭据传递给第二个远程处理 session ,因此它无法连接,即使如果您手动输入凭据。如果您确实需要进行远程处理,我建议您坚持启动隐藏的 PowerShell 进程。

关于powershell - 从 cmd 运行 PowerShell 方法,不要等待它的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41932496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com