当前位置:  开发笔记 > 开发工具 > 正文

我们能看到PowerShell cmdlet的源代码吗?

如何解决《我们能看到PowerShellcmdlet的源代码吗?》经验,为你挑选了4个好方法。

我正在学习一些PowerShell.是否可以看到像Get-ChildItem这样的内置cmdlet的源代码?



1> halr9000..:

实际上,最好的办法是去看看PowerShell Community Extensions.这个开源软件社区项目"旨在提供一组广泛使用的附加cmdlet ......".该项目的开发人员是PowerShell MVP并且知道他们的东西.

至于在现有PowerShell cmdlet上使用反射,PowerShell MVP Oisin Grehan做了一个名为" Reflect-Cmdlet " 的方便功能.我不会窃取他的代码并将其放在这里,但基本上你所做的是:

Get-Command Get-ChildItem | Reflect-Cmdlet

然后弹出.NET Reflector,打开并扩展了正确的程序集.这真的很酷.这是一个截图:

替代文字http://halr9000.com/images/screenshots/reflector.png


链接到"Reflect-Cmdlet"的+1,非常有帮助.修改后使其与Jetbrains DotPeek配合使用.https://gist.github.com/dennisroche/013c5a56d9a7f16851cb

2> Zev Spitz..:

Powershell的源代码现在可以在Github上找到.
源代码Get-ChildItem可以在这里找到.



3> ImpossibleSq..:

我想如果你刚刚开始使用PowerShell,这就是你要找的东西:

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-Process)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\powershell\get-process.ps1

这将创建一个脚本,显示Get-Process的运行方式.放入要替换Get-Process的任何cmdlet.如果你想谷歌更多关于它,这就是你如何创建代理功能.


这会创建一个[代理命令](http://blogs.msdn.com/b/powershell/archive/2009/01/04/extending-and-or-modifing-commands-with-proxies.aspx),这不是'与查看源代码完全相同.这不会为您提供Get-Process的源代码,也不会向您展示它是如何运行的; 它返回一个可用于修改cmdlet的基本脚本,例如,通过向其添加其他参数.

4> Michael Krop..:

对于已编译的Cmdlet,您可以获取.dllwith 的路径:

(Get-Command Get-ChildItem).DLL

(替换Get-ChildItem为您感兴趣的cmdlet)

一旦你知道了它的路径.dll,就可以使用像dotPeek这样的.NET反汇编程序打开它:

& dotPeek64.exe (Get-Command Get-ChildItem).DLL

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有