比PowerShell.exe更好的PowerShell主机?

比PowerShell.exe更好的PowerShell主机?,powershell,Powershell,我一直在尝试从我以前最喜欢的4NT切换到PowerShell。它缺少了4NT在过去20年中添加的许多细节(我是一个4DOS老用户) 例如,在4NT中,如果您键入几个字母,然后单击“向上/向下”,则历史记录列表将根据您键入的内容进行过滤。Page up/down会弹出一个包含所有匹配项的弹出窗口,您可以用光标浏览这些匹配项。都在控制台窗口空间中,没有GUI。这是我错过的一个节省时间的好机会。powershell.exe中还缺少许多类似的内容 是否有其他powershell.exe的替代方案可能具有

我一直在尝试从我以前最喜欢的4NT切换到PowerShell。它缺少了4NT在过去20年中添加的许多细节(我是一个4DOS老用户)

例如,在4NT中,如果您键入几个字母,然后单击“向上/向下”,则历史记录列表将根据您键入的内容进行过滤。Page up/down会弹出一个包含所有匹配项的弹出窗口,您可以用光标浏览这些匹配项。都在控制台窗口空间中,没有GUI。这是我错过的一个节省时间的好机会。powershell.exe中还缺少许多类似的内容


是否有其他powershell.exe的替代方案可能具有这样的功能,从而真正利用了控制台环境?我意识到有很多基于GUI的工具将PowerShell作为窗格嵌入,但我真的对作为100%控制台应用程序的cmd.exe/4nt.exe替代品感兴趣(除了选项对话框或其他任何东西)。

PowerShell仍然是非常新的,所以请找人来实现其中的一些。不过现在,您可以点击F7获取命令历史记录并从中进行选择。powershell中的制表符完成功能也非常强大,您可以使用通配符完成命令制表符的完成(即使是在部分cmdlet名称上)

约书亚已经提到了F7。您还可以在Powershell.exe中进行部分历史记录匹配,方法是键入一些命令并按F8-重复F8循环匹配(请参见关于历史记录)。还有一些比人们通常知道的更多的行编辑功能。这些都记录在“关于行”编辑帮助主题中。不过,PowerShell控制台主机中的行编辑仍存在一些不足之处。FWIW我知道的所有其他主机都是基于GUI的

顺便说一句,我是4NT用户多年(以及Korn shell用户)。即使在4NT中发现了一些缺失的便利设施,我还是发现PowerShell是一个功能更强大的外壳,作为一名开发人员,所有的“语言”部分都非常容易适应和使用。我从来没有真正喜欢过Korn shell的
if/fi
case/esac
语句——只是用错误的方式摩擦了我的感觉。:-)此外,在PowerShell中,您还可以利用自己的历史记录做一些很酷的事情,如:

# Search history using regex
PS> get-history -count 999 | select-string '\b(fl|ft)\b'

# Look at your shell usage pattern by hour of day - Name column is hour of day
PS> ghy | group {$_.StartExecutionTime.Hour}

Count Name       Group
----- ----       -----
   30 21         {$allargs, echoargs -arg $allArgs, echoargs $a
    2 22         {ghy | group {$_.StartExecutionTime.Hour}, ls}

# Look at commands in terms of execution time (sorted descending)
PS> ghy | Select CommandLine,Id,`
      @{n='ExecutionTime';e={$_.EndExecutionTime - $_.StartExecutionTime}} | 
      Sort ExecutionTime -Desc 

CommandLine                                        Id ExecutionTime
-----------                                        -- -------------
ls C:\Windows\System32 ...                         94 00:00:06.0233445
ls C:\Windows\System32\...                         93 00:00:01.1360650
gps | fl                                           89 00:00:00.5780330
dir                                                80 00:00:00.0950054
ls                                                 83 00:00:00.0870050
ghy | Select CommandLin...                         92 00:00:00.0810046
dir                                                67 00:00:00.0750042
ghy | Select CommandLin...                         95 00:00:00.0580034
ghy | Select CommandLin...                         96 00:00:00.0570032
ghy | Select CommandLin...                         97 00:00:00.0540031
dir                                                76 00:00:00.0500029
get-history -count 999 ...                         88 00:00:00.0420024

嘿,你和我有同样的经历。我也是一个4dos/4nt的老用户。我不喜欢完全取代控制台子系统进行输入的新型主机,这也是我喜欢PowerShell Plus的原因——它的核心仍然是NT控制台,但有许多可以根据需要缩减的现代图形功能

有30天的试用期,作者Tobias Weltner对帮助请求/建议反应非常积极

-Oisin

退房。这是一个很好的(免费)插件,它为您提供了一些非常好的选项卡完成功能

更新


有一个新主机。

也可以使用
#
选项卡查看命令历史记录

使用
F8
的缺点之一是它区分大小写,并且只匹配命令的开头。使用
#
不区分大小写,并将匹配前面命令中任何位置的文本

如果您具有以下命令历史记录:

# 1
$np = Start-Process notepad -PassThru
# 2
$np| get-process
# 3
$np| Stop-Process
键入
#pr
,然后重复tab将在1、2和3之间循环

键入
#st
,然后重复tab将在1和3之间循环

仅使用
#
将匹配所有历史记录

#
也可以在输入部分命令后使用。如果您的历史记录是:

'notepad'
select *

您可以键入
获取进程#n |#s
获取
获取进程“记事本”;选择*

嘿,Oisin,我不知道它使用了控制台子系统-酷。我猜所有漂亮的GUI窗口都把我甩了。:-)这是我第三次尝试从4NT转过来,这次我要坚持下去。很高兴了解F7/F8,谢谢!现在,如果ctrl-v有一个等价的快捷键,这样我就不必伸手去拿鼠标了。。也许自动热键可以帮我填补空白。重温这条老线索。。我通过Console2运行Powershell[并提供剪切/复制/粘贴功能(以及许多其他功能).Yeh,f8的区分大小写很奇怪。PS团队非常努力地使所有通常区分大小写的东西都不区分大小写,但他们忽略了这一点。这似乎是个错误。@ElroyFlynn-f8是Windows控制台的一个功能,而不是PowerShell(您也可以从cmd.exe使用它)。PS团队无法控制它,因为在PowerShell存在之前就存在F8控制台功能。