У меня на работе одна ситуация, когда мне нужно декомпилировать командлет Powershell, возможно, в код. net c#. Я нашел эту информацию (https://yoursandmyideas.com/2014/12/30/decompiling-powershell-cmdlet-code/), но после нее я могу видеть только код функции, а не DLL. Статье около 5 лет, есть ли другой способ сделать это с более новыми версиями Powershell? Моя конечная цель состоит в том, чтобы декомпилировать dll, чтобы я мог пошагово пройти по коду и устранить проблему, с которой мы сталкиваемся в Visual Studio, строка за строкой.
(Get-Command Get-ServerHealth).DLL
также ничего не возвращает
Ниже приведен функция внутри get-serverhealth, командлет Exchange. Вы видите, что он ссылается на другие функции, которые я не могу найти?
- Get-PSImplicitRemotingClientSideParameters
- Get-PSImplicitRemotingSession
Функция:
#Name : Get-ServerHealth
#CommandType : Function
#Definition :
Function Get-ServerHealth
{
param(
[Alias('ea')]
${ErrorAction},
[Alias('vb')]
[switch]
${Verbose},
[Alias('ov')]
${OutVariable},
[Alias('infa')]
${InformationAction},
[Alias('wv')]
${WarningVariable},
[Alias('db')]
[switch]
${Debug},
[Alias('pv')]
${PipelineVariable},
${HealthSet},
[Alias('ev')]
${ErrorVariable},
[Alias('Server')]
${Identity},
[Alias('ob')]
${OutBuffer},
[Alias('wa')]
${WarningAction},
[switch]
${HaImpactingOnly},
[Alias('iv')]
${InformationVariable},
[switch]
${AsJob})
Begin {
try
{
$positionalArguments = & $script:NewObject collections.arraylist
foreach ($parameterName in $PSBoundParameters.BoundPositionally)
{
$null = $positionalArguments.Add( $PSBoundParameters[$parameterName] )
$null = $PSBoundParameters.Remove($parameterName)
}
$positionalArguments.AddRange($args)
$clientSideParameters = Get-PSImplicitRemotingClientSideParameters $PSBoundParameters $True
$scriptCmd = { & $script:InvokeCommand `
@clientSideParameters `
-HideComputerName `
-Session (Get-PSImplicitRemotingSession -CommandName 'Get-ServerHealth') `
-Arg ('Get-ServerHealth', $PSBoundParameters, $positionalArguments) `
-Script { param($name, $boundParams, $unboundParams) & $name @boundParams @unboundParams } `
}
$steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
$steppablePipeline.Begin($myInvocation.ExpectingInput, $ExecutionContext)
}
catch
{
throw
}
}
Process
{
try
{
$steppablePipeline.Process($_)
}
catch
{
throw
}
}
End
{
try
{
$steppablePipeline.End()
}
catch
{
throw
}
}
# .ForwardHelpTargetName Get-ServerHealth
# .ForwardHelpCategory Function
# .RemoteHelpRunspace PSSession
}