当使用PowerShell ISE和Chocolatey安装应用程序时,如果我忘记了ORDER BY
开关,它会挂起等待某种“确认”,而这种“确认”不会出现在任何地方吗?
我必须按Ctrl + Alt + Del来杀死PowerShell ISE和Chocolatey,它会让事情处于中途状态。
下面是这样的:
答案 0 :(得分:2)
除了上面对OP的评论之外,关于PowerShell ISE不支持(大多数)交互式控制台应用程序......
值得记住的是, PowerShell_ISE.exe 中的REPL窗口不仅仅是某种停靠的 PowerShell.exe 控制台。大多数情况下,用户体验 相同,但这隐藏了许多差异:
这些可执行文件都是运行PowerShell 运行空间(引擎)的主机应用程序。您甚至可以编写自己的应用程序,以便主持"电源外壳。它是确定用户体验的主机应用程序。
最后,对于最好奇的人来说:
我想我为了自己的利益更多地写了这个答案;这对我来说是一次有用的复习,因为我不时地被同事们问到这个......
答案 1 :(得分:0)
这只是因为PoSH ISE不适用于用户交互式.exe命令。
如果您.exe或任何需要回复的内容,则在ISE中您必须提供回复。
你可以通过尝试任何其他开启互动内容的.exe来轻松证明这不是巧克力。例如,只需输入:
nslookup在脚本窗格和F8中运行它,或在控制台窗格中键入它并按Enter键
无论哪种方式,控制台都会挂起,等待您无法提供的交互式响应。
您仍然可以在PoSH ISE中使用nslookup等交互式命令,但您必须提供所有参数。例如:
nslookup microsoft.com
nslookup -type=mx microsoft.com
nslookup -q=soa microsoft.com
PS 5.1现在甚至会发出错误信息。
NSLOOKUP
无法启动“nslookup”。不支持交互式控制台应用程序。 要运行该应用程序,请使用Start-Process cmdlet或使用“文件”菜单中的“启动PowerShell.exe”。
要查看/修改被阻止的控制台应用程序列表,请使用$ psUnsupportedConsoleApplications,或参阅在线帮助。 在行:0 char:0
您可以通过这种方式轻松地外壳到PowerShell控制台主机。 以下是我在我的个人资料中所做的功能。
Function Start-ConsoleCommand
{
[CmdletBinding()]
[Alias('scc')]
Param
(
[string]$ConsoleCommand,
[switch]$PoSHCore
)
If ($PoSHCore)
{Start-Process pwsh -ArgumentList "-NoExit","-Command &{ $ConsoleCommand }" -Wait}
Else
{Start-Process powershell -ArgumentList "-NoExit","-Command &{ $ConsoleCommand }" -Wait}
}
所以,只需输入
即可scc -ConsoleCommand choco install winmerge
它会弹出控制台主机并保持打开状态,直到你关闭它。
<强> 更新 强> 根据 - Alex Kwitny的要求
PoSHGet默认只有两个存储库,
nuget
PSGallery
但您可以添加自己的或其他。 您可以使用以下cmdlet来实现此目的。 我没有必要在一段时间内使用Chocolatey,但快速查看我的档案,以下是我使用的
设置巧克力库
Find-Module
Get-Module
Find-Package
Get-Package
Get-PackageProvider
Get-PackageSource
Get-PackageSource -Provider chocolatey
Register-PackageSource -Name chocolatey -Provider Chocolatey -Trusted -Location http://chocolatey.org/api/v2/ -Verbose
Find-Module
Get-Module
Find-Package
Get-Package