首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell编辑Cmdlet/制作新Cmdlet/合并Cmdlet

PowerShell编辑Cmdlet/制作新Cmdlet/合并Cmdlet
EN

Stack Overflow用户
提问于 2015-05-17 00:16:24
回答 3查看 1K关注 0票数 0

我一直试图使用PowerShell快速搜索Windows文件和设置(比GUI更快),但在提高搜索速度方面遇到了一些困难,我无法在web上找到解决方案。

首先,我想制作自己的cmdlet,它可以根据需要显示我自己的文本(我想把它放在我定义的常用的赞扬中,因为'get-command‘是快速搜索的大方法,但不知道如何做到。我用“echo”cmdlet制作了简单的脚本,但只显示了一次。

第二,如何将Set-Location、Get-ChildItem和sorted合并在一起,快速改变目录,并按dir内容的名称列表自动显示排序?可能是自定义cmdlet之类的。

第三,如何将设置位置与推送位置合并在一起,以便轻松键入“popd”以返回到以前的dir?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-17 00:54:02

我觉得你的语言有点混乱。实际的Cmdlet是用.Net写的

不过,我不认为这是你想要的。您所描述的任务可以用脚本文件和函数来完成,这些文件和函数不太复杂。

首先,我想制作自己的cmdlet,它可以根据需要显示我自己的文本(我想把它放在我定义的常用的赞扬中,因为'get-command‘是快速搜索的大方法,但不知道如何做到。我用“echo”cmdlet制作了简单的脚本,但只显示了一次。

这听起来像剧本。见Get-帮助about_Scripts。

第二,如何将Set-Location、Get-ChildItem和sorted合并在一起,快速改变目录,并按dir内容的名称列表自动显示排序?可能是自定义cmdlet之类的。

您可以创建一个带有参数的脚本,以便非常容易地完成这个任务(嗯,当您熟悉它时,就可以轻松地完成它)。

第三,如何将设置位置与推送位置合并在一起,以便轻松键入“popd”以返回到以前的dir?

这是一个例子吗?Pop-Location已经存在了,而且它已经有了一个别名popd

如果您想查看MS文档,我将从脚本开始。在微软虚拟学院( Microsoft )完成开始使用PowerShell 3.0跳转开始课程也可能是值得的,这是我听说过的为数不多的任何类型的教程之一。您正在谈论的内容从第9部分开始,但老实说,您听起来很新鲜,可能会从整个类中受益。

有一个一些微软的文档,可以说是一个如何,但它是相当命中错过,老实说。PowerShell文档的最大问题是,它是一个很好的技术参考,一个平庸的食谱,一个糟糕的用户手册,甚至不假装是一个教程。它是为那些已经知道如何使用脚本的人准备的。

我不知道任何其他好的在线教程,但您可能需要检查其他地方,如/r/PowerShell subreddit。

票数 1
EN

Stack Overflow用户

发布于 2015-05-18 18:34:35

第一

高级功能

Get-Help about_advanced_functions

您要查找的术语是函数,特别是带有cmdletbinding()的高级函数。这使您可以构建自己的函数,这些函数充当命令,甚至可以调试、whatif、命名参数集、pipleline输入等等。

配置文件

Get-Help about_Profiles

将您常用的函数存储在文件中,并每次使用配置文件来执行它。

别名

Get-Help alias get-aliasgal列出了所有当前定义的别名。几乎所有常用的命令都有CLI别名。(在脚本中使用它们会使您的脚本不可读,包括我在内的许多人都认为。)

使用别名命令和配置文件设置持久别名。

模块

将您的功能合并到一个模块中,该模块可以自动加载和共享。

ISE片段

Edit, Start SnippetsCTRL+J

第二

Get-ChildItemgcidirls允许您指定路径(位置参数),默认的排序是按名称排序。

如果要更改目录,并强制目录列表按名称排序,可以使用cd c:\windows;gci|sort name或类似于

第三

(pushd和popd已经是别名了)

代码语言:javascript
复制
Push-Location
# do stuff
Pop-Location

代码语言:javascript
复制
pushd
# do stuff
popd

最后的想法

get-helpget-memberget-aliasget-command都是非常强大的工具。请记住,设置位置和以及所有的-Location和-Item命令可以不仅仅在字母驱动器中使用。它们可以在任何PSDrive中使用。PSDrives包括注册表、AD、Env、Alias、变量、函数、由模块添加的其他功能等等。所以,给get-psdrive一个驱动器,看看如何在一个地方学习命令,您实际上是在同时学习其他命令。

票数 1
EN

Stack Overflow用户

发布于 2015-05-17 02:30:15

我认为您要做的是在配置文件中定义自己的函数/别名,每次启动shell时都会加载这些函数/别名。

若要创建空白配置文件(您可能需要测试Test-Path $profile中还没有一个配置文件):

代码语言:javascript
复制
New-Item $profile -Type File -Force

然后您可以在记事本、ISE或其他任何地方编辑它,并添加函数和别名。

函数在功能上类似于cmdlet,除非它们是用powershell编写的。Cmdlet实际上是用.NET dll编写的。别名(例如cd)只是指向cmdlet/函数。

修改现有的cmdlet是一个高级主题,但这可以通过代理函数完成。但是,我认为您现在应该只定义您自己的函数和别名,如果需要的话,应该提供一个关于代理函数的更具体的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30282036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档