微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell如何使按键上的及时更改?

我是Powershell的新手。 我试图创build我自己的自定义提示显示当前目录的截断版本,除非通过按CTRL + R展开它。 而且,我想这样做:

$shortdirpath...> *user presses CTRL+R* $reallyreallylongfulldirpath> *Full dir path is shown as long as CTLR + R is held down*

我应该怎样在C#程序中使用.NET Framework 3.5检测Windows 8.1的正确操作系统版本?

有没有一种方法可以唯一标识在.NET中连接到Windows PC的任何存储介质?

Windows / .Net中的蓝牙API?

使用C#获取连接到命名pipe道服务器的客户端的进程ID

为什么FileSystemInfo不声明GetAccessControl方法

我不认为有办法做到这一点,但我可以与您分享一个自定义提示,我喜欢使用:

function prompt { $Host.UI.RawUI.WindowTitle = Get-Location "[$env:COmpuTERNAME] PS> " }

这会将当前的计算机名称放在提示符中(您可能不需要这样做),但会将当前路径放在窗口标题中,其中特别是长路径,并且不要混淆提示

以下是这样做的一种方式,但涉及很多妥协。 首先它只能在PS控制台中工作,而不是在ISE上,或者不在任何托管PS的应用程序中工作。 其次,这将涉及到很多工作,取决于你想要的经验是如何,“顺利”。 第三,这可能会导致其他意想不到的事情发生。

基本上你写了一个提示函数的脚本,轮询键盘看Ctrl-R或任何其他“行动”字符。 我所说的“动作”字符的意思是像进入,制表符,退格键,向上箭头,向下箭头等,导致某些事情发生。 如果脚本看到Ctrl-R,那么你可以输出完整的路径,在标题栏或控制台。 如果将其输出到控制台,则脚本将必须找出控制台的哪一行包含当前提示。 Rawui成员包含这个信息。

裸露的轮廓可能如下所示:

do { sleep -milli 250 if ($host.ui.rawui.keyavailable) { $key = $host.ui.rawui.readkey() if ($key.character -eq [char]'x') { write-host burp } else { break} } } while ($true)

脚本每隔一秒查看一次密钥是否可用。 如果是这样,它读取密钥。 如果键是'x'(ctrl-r为你)它输出“打嗝”。 但是,您可以将“burp”更改为完整路径,以及将消息放置在正确位置(控制台上的标题栏或右侧行)的逻辑。

如果键不是'x',那么这个简单的例子就返回了。 这意味着“x”被“吃掉”,并且“x”功能不再起作用,直到输出一个提示。 不过你可以自己处理所有的“动作”键,而不是返回。 如果向上箭头被按下,您将检索前一个命令并将其输出到控制台。 如果按箭头键,则会删除光标前的字符。 如果选项卡被按下,你将不得不与PS的内置命令完成交互(不知道这是可能的)。 等等。

最终,当用户按下回车键时,您需要将组成命令行的所有键送入控制台(可以使用WScript主机的SendKeys方法),也可以直接从提示功能执行命令,使用Invoke-Expression(iex)。 如果使用iex,那么PS保存的命令历史记录(即get-history)将不起作用,除非您找出处理该命令的方法(也许是Add-History?)。 如果您使用SendKeys,则快速输入的用户有可能使用SendKeys插入他的击键。

作为一个折中的办法,你可以不用自己处理所有的“动作”键,而是按下ctrl-r之外的一个键,然后使用SendKeys把这个键发送到控制台,以防止char被“吃掉” ”。 这样,你可以用20行脚本而不是几百个脚本来代替,只需要在输入任何字符之前用ctrl-r工作。

一个并发症。 readkey()允许你获得向下和向上的击键。 因此,只要按下ctrl-r中的“r”,就可以显示完整路径。 不过,您的脚本需要了解其他地方的向上/向下击键。 这可能就像忽略下来的击键一样简单。

这有一个光明的一面。 你可以实现超出PS通常所做的密钥处理功能。 所以如果你想按CTRL键来显示当前时间,你可以这样做。 如果你想ctrl-w删除光标下的当前单词,你可以。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐