programing

PowerShell cmdlet의 소스 코드를 볼 수 있습니까?

abcjava 2023. 8. 29. 20:07
반응형

PowerShell cmdlet의 소스 코드를 볼 수 있습니까?

PowerShell을 배우고 있습니다.Get-ChildItem과 같은 기본 제공 cmdlet의 소스 코드를 볼 수 있습니까?

이제 Powershell 소스를 Github에서 사용할 수 있습니다.
의 소스Get-ChildItem여기서 찾을 수 있습니다.

사실 PowerShell Community Extensions를 확인해 보는 것이 가장 좋습니다.이 오픈 소스 소프트웨어 커뮤니티 프로젝트는 "넓게 유용한 추가 cmdlet 세트를 제공하는 것을 목표로 합니다..."이 프로젝트의 개발자들은 PowerShell MVP이고 그들의 것을 알고 있습니다.

기존 PowerShell cmdlet에 대한 리플렉션을 사용하는 한 PowerShell MVP Oisin Grehan은 "Reflect-Cmdlet"이라는 이름의 편리한 기능을 만들었습니다.그의 코드를 훔쳐서 여기에 배치하지는 않겠지만 기본적으로 당신이 하는 일은 다음과 같습니다.

Get-Command Get-ChildItem | Reflect-Cmdlet

그다음에.NET Reflector가 나타나고 올바른 어셈블리가 열리고 확장되며 모든 것이 표시됩니다.정말로 꽤 멋집니다.

컴파일된 Cmdlet의 경우 다음과 같은 경로를 얻을 수 있습니다..dll포함:

(Get-Command Get-ChildItem).DLL

(바꾸기Get-ChildItem관심 있는 cmdlet으로)

예:

PS C:\Windows\system32> (Get-Command Get-StoragePool).DLL

PS C:\Windows\system32> 

일단 당신이 그 길을 알게 되면,.dll를 사용하여 열 수 있습니다.닷피크와 같은 NET 분해기:

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

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을 넣습니다.만약 당신이 그것에 대해 더 검색하고 싶다면, 이것이 당신이 프록시 기능을 만드는 방법입니다.

CodePlex의 윈도우즈 Installer PowerShell 스냅인도 살펴볼 수 있습니다.커뮤니티 확장보다 작은 프로젝트이기 때문에 진행 상황을 파악하는 것이 더 쉽습니다.

Professional Windows PowerShell Programming: Snapins, Cmdlets, Hosts and Provider(Wrox Professional Guide), ISBN: 04701739 - cmdlet과 프로바이더를 작성하는 데 가장 유용한 책 중 하나입니다.

당신은 사용할 수 있어야 합니다.소스 코드를 "확인"하는 NET Reflector.어셈블리를 알아야 하지만 GetType 메서드 또는 유사한 방법을 사용하여 어셈블리에 액세스할 수도 있습니다.

PowerShell 언어입니다.NET 리플렉터 추가 기능이 유용할 수 있습니다.

PowerShell cmdlet의 어셈블리는 GAC에 있습니다."Get-ChildItem" cmdlet은 다음에서 찾을 수 있습니다.

마이크로소프트.PowerShell.명령.관리 어셈블리, 마이크로소프트.PowerShell.명령.GetChildItemCommand 클래스입니다.

ILSpy를 사용했습니다.NET 디컴파일러 및 "powershell" 문자열로 필터링된 GAC 어셈블리.제가 알기로는, 마이크로소프트사입니다.PowerShell.명령.어셈블리에는 기본 제공 cmdlet이 포함되어 있습니다.

cmdlet과 함께 Install-Module이진 파일이 아닌 소스 코드를 포함합니다(예: PSnmap).

Install-Module -Name PSnmap

...에서할 수 파일 코드를 확인할 수 있습니다.Definition속성:

Get-Command Invoke-PSnmap | Format-List

그지않다, ▁the▁을▁if▁file: ▁in)야니합다▁(해,,▁not제▁you▁some해ile:,)에서 지정한 파일)을 압축 해제해야 .DLL재산).

일부 코드는 참조 리소스 사이트(http://referencesource.microsoft.com/ #System.Management.Automation/System/Management/Automation/ChildItemCmdletProviderIntrinsics.cs ,c6eed9f6a5417c19)에서 찾을 수 있습니다.

그러나 이것은 코드의 세부 사항이 아니라 개요만 제공합니다.

저는 PowerShell의 소스 코드가 공개된 적이 없다고 생각합니다.

언급URL : https://stackoverflow.com/questions/266250/can-we-see-the-source-code-for-powershell-cmdlets

반응형