繁体   English   中英

比PowerShell.exe更好的PowerShell主机?

[英]Better PowerShell hosts than powershell.exe?

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

例如,在4NT中,如果键入几个字母然后按向上/向下,则历史列表将按您键入的内容进行过滤。 向上/向下翻页会弹出所有匹配项,您可以浏览它们。 全部在控制台窗口空间,没有GUI。 这是我想念的大节省时间。 powershell.exe还有很多其他的东西丢失了。

有没有替代powershell.exe可能有这样的功能,真正利用控制台环境? 我意识到有很多基于GUI的工具将PowerShell作为一个窗格嵌入,但我真的对cmd.exe / 4nt.exe替换感兴趣,它仍然是一个100%的控制台应用程序(可能是一个选项对话框或随你)。

约书亚已经提到了F7。 您还可以通过键入一些命令并按F8 - 重复F8循环匹配(参见about_history),在Powershell.exe中进行部分历史记录匹配。 除了人们通常知道的还有一些行编辑功能。 这些内容记录在about_line_editing帮助主题中。 尽管如此,PowerShell控制台主机中的行编辑还是有所不足。 FWIW我所知道的所有其他主机都是基于GUI的。

BTW我多年来一直是4NT用户(以及Korn shell用户)。 即使在4NT中发现了一些缺少的设施,我发现PowerShell是一个更强大的shell,作为开发人员,所有“语言”位都很容易适应和使用。 我从来没有真正喜欢Korn shell if / ficase / esac声明 - 只是以错误的方式磨擦了我对aethestics的感觉。 :-)在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

也可以使用#标记命令历史记录。

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

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

# 1
$np = Start-Process notepad -PassThru
# 2
$np| get-process
# 3
$np| Stop-Process

重复键入#pr then tab将循环显示1,2和3。

重复键入#st然后选项卡将循环显示1和3。

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

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

'notepad'
select *

您可以键入Get-Process #n<tab>| #s<tab> Get-Process #n<tab>| #s<tab>获取Get-Process 'notepad'| select * Get-Process 'notepad'| select *

查看PowerTab 它是一个伟大的(和免费的)附加组件,为您提供一些非常好的标签完成功能。

UPDATE

PowerTab有一个新主机。

嘿,你跟我有同样的历史。 我也是一个老的4dos / 4nt用户。 我不是那些完全取代控制台子系统输入的新奇主机的粉丝,这就是我喜欢PowerShell Plus的原因 - 它的核心仍然是NT控制台,但它有许多现代的图形功能,可以根据需要削减。

http://www.idera.com/Products/PowerShell/PowerShell-Plus/

有30天的试用期,作者Tobias Weltner对帮助请求/建议非常敏感。

-Oisin

Powershell仍然很新,所以找人来实现其中的一些。 但是现在,您可以按F7获取命令历史记录并从中进行选择。 PowerShell中的选项卡完成功能非常强大,您可以使用通配符执行命令选项卡完成(甚至在部分cmdlet名称上)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM