Können wir den Quellcode für PowerShell-Cmdlets sehen?
Lerne ich einige PowerShell. Ist es möglich zu sehen, dass der source-code für einen integrierten Cmdlets wie Get-ChildItem?
Kommentar zu dem Problem
Binärdateien nicht .NET, so ist die Reflexion rechts aus.
Was? Nein, das ist albern. Ich werde zu aktualisieren meinem answesr mit einigen Reflexion Zeug.
Sie können jetzt github.com/PowerShell/PowerShell/blob/HEAD/src/....
InformationsquelleAutor der Frage | 2008-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tatsächlich, Ihre beste Wette ist, gehen Sie bitte zuerst PowerShell Community Extensions. Diese open source software community project "hat das Ziel, eine allgemein nützliche zusätzliche cmdlets...". Die Entwickler an dem Projekt sind PowerShell-MVPs und wissen, Ihre Sachen.
Soweit mit der Reflexion auf die vorhandenen PowerShell-cmdlets, PowerShell MVP Oisin Grehan eine praktische Funktion mit dem Titel "Reflektieren-Cmdlet". Ich werde nicht stehlen seinen code und platzieren Sie es hier, aber im Grunde, was Sie tun, ist:
Dann .NET Reflector erscheint, mit der rechten Versammlung eröffnet und erweitert und alles. Es ist wirklich ziemlich cool. Hier ein screenshot:
Alt-text http://halr9000.com/images/screenshots/reflector.png
InformationsquelleAutor der Antwort halr9000
Die Quelle für die Powershell ist jetzt verfügbar auf Github.
Die Quelle für
Get-ChildItem
finden hier.InformationsquelleAutor der Antwort Zev Spitz
Ich denke, wenn man es nur ab PowerShell, das ist das, was man sich auf der Suche nach:
Dadurch wird ein Skript erstellen, das zeigt, wie Get-Process läuft. Setzen Sie in jedem cmdlet, das Sie möchten, ersetzen Sie "Get-Process". Wenn Sie möchten, dass google mehr über Sie, dies ist, wie erstellen Sie eine proxy-Funktion.
InformationsquelleAutor der Antwort ImpossibleSqui
Für kompilierte Cmdlets, können Sie den Pfad zu der
.dll
mit:(Ersetzen
Get-ChildItem
mit dem cmdlet, das Sie interessiert sind)Sobald Sie wissen, den Pfad der
.dll
, können Sie es mit ein .NET disassembler wie dotPeek:InformationsquelleAutor der Antwort Michael Kropat
Ich glaube nicht, dass der source-code für die PowerShell hat jemals veröffentlicht wurde.
InformationsquelleAutor der Antwort EBGreen
Vielleicht möchten Sie auch einen Blick auf Windows Installer PowerShell-Snap-In auf CodePlex. Es ist ein kleineres Projekt als die community-Erweiterungen, so ist es einfacher, auf Ihrem Kopf herum, was Los ist.
Check-out Professional Windows PowerShell Programming: Snapins, Cmdlets, Gastgeber und Anbieter (Wrox Professional Guides), ISBN: 0470173939 - es ist eines der nützlichsten Bücher, die ich gefunden habe, für das schreiben-cmdlets und-Anbieter.
InformationsquelleAutor der Antwort Stephen Harrison
Sollten Sie in der Lage sein zu verwenden .NET Reflector zu "sehen" den source-code. Sie müssen wissen, die Montage zwar nicht, aber es sollte auch zugänglich über die GetType-Methode oder ähnliches.
Diese PowerShellLanguage .NET Reflector Add-In kann vielleicht nützlich sein.
InformationsquelleAutor der Antwort dalle
PowerShell-cmdlets' Assemblys befinden sich im GAC. Finden Sie "Get-ChildItem" - cmdlet in:
Microsoft.PowerShell.Befehle.Management assembly, Microsoft.PowerShell.Befehle.GetChildItemCommand Klasse.
Ich verwendet habe, ILSpy .NET decompiler und gefiltert, GAC assemblies, die von "powershell" - string. So wie ich das verstehe, Microsoft.PowerShell.Befehle.* Assemblys enthalten, die integrierten cmdlets.
InformationsquelleAutor der Antwort ssvinarenko
Code finden Sie auf der Referenz-Ressourcen-Site:
http://referencesource.microsoft.com/#System.Management.Automation/System/Management/Automation/ChildItemCmdletProviderIntrinsics.cs,c6eed9f6a5417c19
Diese gibt nur die Umrisse aber nicht die code ' s detail.
InformationsquelleAutor der Antwort JohnLBevan