Powershell 如何在源代码为点时调用全局命令

Powershell 如何在源代码为点时调用全局命令,powershell,powershell-4.0,Powershell,Powershell 4.0,例如: 点源openssl.exe在其上下文中调用命令 . .\openssl.exe OpenSSL> version -a 生成版本信息 如果我想用传统的cls清除屏幕,它将尝试在OpenSSL的上下文中调用它 如何从以前的/非点源上下文调用cls。除此之外,您甚至可以从点源中“退一步”吗?我相信您最好在非交互模式下执行命令:\ openssl.exe版本-a。这将吐出版本信息,然后将您留在shell中。有些程序在交互模式下有命令来调用shell命令(我想到的是MySQL),但Ope

例如:

点源openssl.exe在其上下文中调用命令

. .\openssl.exe
OpenSSL> version -a
生成版本信息

如果我想用传统的
cls
清除屏幕,它将尝试在OpenSSL的上下文中调用它


如何从以前的/非点源上下文调用
cls
。除此之外,您甚至可以从点源中“退一步”吗?

我相信您最好在非交互模式下执行命令:
\

openssl.exe版本-a
。这将吐出版本信息,然后将您留在shell中。有些程序在交互模式下有命令来调用shell命令(我想到的是MySQL),但OpenSSL似乎不支持它。您可以退出交互模式,然后使用
quit
命令返回shell。

您正在调用交互式
openssl
会话。在该会话中,您可以运行OpenSSL(sub)命令,但不能运行PowerShell cmdlet(因为环境现在是OpenSSL,而不是PowerShell)。通过退出
openssl
返回PowerShell

顺便说一句,Dot sourcing在这里没有任何好处。您只需运行
\openssl
即可获得相同的结果

您还可以通过在命令行上提供子命令以非交互方式运行
openssl

.\openssl version -a

我不认为你可以在这种意义上点源代码exe。这是针对脚本、函数等的。您正在真正地运行它。我不认为我说的不正确,在这种情况下,你没有访问主机的权限。如果将其作为作业运行,则不会丢失上下文,但无法与之交互。希望你能得到比这个更好的答案。@Matt我想我明白你的意思了。也许我是在用微软不希望我用的方式来使用网络资源。通过能够直接对可执行文件运行命令,它确实得到了我想要的结果。+1 for
quit
command可重新运行回以前的/非点源上下文。这非常有帮助,在我被dot源代码导入OpenSSL时起到了作用。但是,我无法让非交互模式执行正常工作。这是你这方面的一个完整的工作示例吗?我的回答中忘记了一个反斜杠。这样,它就可以正常工作了。是的,现在可以了。非常感谢。不过,为什么还要麻烦使用前面的
?只是好奇,你不需要它。在这种情况下没什么作用,谢谢。