我一直在尝试使用PowerShell快速搜索Windows文件和设置(比GUI更快),但在提高搜索速度方面遇到一些困难,我无法在网络上找到解决方案。< / p>
首先,我想制作自己的cmdlet,根据需要显示我自己的文字(我想把我经常使用的评论放在那里,因为“get-command&#39;是大的快速搜索,但不知道它是怎么做的。我只使用了回声&#39; cmdlet创建了脚本,但它只显示了一次。
其次如何将Set-Location,Get-ChildItem和Sort-Object合并在一起以快速更改目录并自动显示按名称列表的dir内容排序?它可以是自定义cmdlet左右。
第三,如何将Set-Location与Push-Location合并在一起,以便轻松输入&#39; popd&#39;回到上一个目录?
答案 0 :(得分:1)
我认为你的语言在这里有点混乱。实际Cmdlet为written in .Net。
然而,我并不认为这就是你想要的。您描述的任务可以通过脚本文件和函数来完成,这些文件和函数的开发程度要低一个数量级。
首先,我想制作自己的cmdlet,根据需要显示我自己的文字(我想把我经常使用的评论放在那里,因为“get-command&#39;是大的快速搜索,但不知道它是怎么做的。我只使用了回声&#39; cmdlet创建了脚本,但它只显示了一次。
这听起来像一个剧本。请参阅Get-Help about_Scripts。
其次如何将Set-Location,Get-ChildItem和Sort-Object合并在一起以快速更改目录并自动显示按名称列表的dir内容排序?它可以是自定义cmdlet左右。
您可以使用参数创建一个脚本,以便轻松完成此任务(当您熟悉它时,很容易)。
第三,如何将Set-Location与Push-Location合并在一起,以便轻松输入&#39; popd&#39;回到上一个目录?
这是一个例子吗? Pop-Location
已存在,且已有别名popd
。
如果您想查看MS文档,我将从Get-Help about_Scripts开始。在Microsoft Virtual Academy完成Getting Started with PowerShell 3.0 Jump Start课程也是值得的,这是我所听到的任何类型的教程之一。你正在谈论的东西从第9部分开始,但老实说,你听起来很新,你可能会从整个班级中受益。
有some Microsoft doc有资格作为一个方法,但老实说,这真的很棒。 PowerShell的整体文档中最大的问题是它是一个很好的技术参考,一个平庸的 cookbook ,一个糟糕的用户手册,并且甚至不假装是教程。它适用于已经知道如何使用脚本的人。
我不知道其他任何好的在线教程,但您可能想在其他地方查看/ r / PowerShell subreddit。
答案 1 :(得分:0)
我认为您要做的是在配置文件中定义自己的函数/别名,每次启动shell时都会加载它们。
要创建空白个人资料(您可能希望测试一下您还没有Test-Path $profile
):
New-Item $profile -Type File -Force
然后你可以在记事本,ISE或其他任何东西中编辑它,并添加函数和别名。
函数在功能上类似于cmdlet,除非它们是用PowerShell编写的。 Cmdlet实际上是用.NET dll编写的。别名(例如cd)只是指向cmdlet / functions。
修改现有cmdlet是一个高级主题,但这可以通过proxy functions完成。但是,我认为你现在应该坚持只定义自己的函数和别名,如果需要,可以回过头来讨论代理函数。
答案 2 :(得分:0)
Get-Help about_advanced_functions
您正在寻找的术语是函数,特别是cmdletbinding()的高级函数。这使您可以构建自己的函数,这些函数充当命令行,甚至是调试,whatif,命名参数集,pipleline输入等。
Get-Help about_Profiles
将常用功能存储在文件中,并使用您的配置文件每次都执行它。
Get-Help alias
get-alias
或gal
列出所有当前定义的别名。几乎所有常用命令都有CLI别名。 (在脚本中使用它们会让你的脚本难以理解,包括我在内的很多人认为。)
使用别名命令行开关和配置文件来设置持久别名。
将您的功能组合到一个可以自动加载和共享的模块中。
Edit, Start Snippets
或CTRL+J
Get-ChildItem
或gci
或dir
或ls
允许您指定路径(位置参数),默认排序是按名称。
如果要更改目录,并强制按名称排序的目录列表,可以使用cd c:\windows;gci|sort name
或像这样的某些
(pushd和popd已经是别名)
Push-Location
# do stuff
Pop-Location
或
pushd
# do stuff
popd
get-help
,get-member
,get-alias
,get-command
所有非常强大的工具。请记住,Set-Location和Get-ChildItem以及所有-Location和-Item命令不仅可以用于字母驱动器。它们可用于任何PSDrive。 PSDrives包括Registry,AD,Env,Alias,Variable,Function,其他由模块添加的功能等等。所以,给get-psdrive
一个驱动器,看看如何在一个地方学习命令,你真的在学习很多其他的在同一时间。