1

我是 powershell 和 Azure 自动化的新手。目前我有一个 Azure 自动化帐户,它几乎没有 Runbook 作业。我正在尝试通过更新其 powershell 脚本向现有 Azure Runbook 作业添加新逻辑。我看到有一些函数,但不幸的是我们没有维护源代码:(。由于运行手册当前运行没有任何问题,我想知道如何获取引用函数的源代码。

我在此 Runbook 使用的自动化帐户以及 Assets、cmdlet 和 Runbooks 节点(您在 Portal 中脚本的编辑模式中看到的)下搜索了模块、模块库、python 2 包等,但无法t 查找引用这些函数的位置。我看到一个模块,我怀疑它有一些相关但不确定。

作为一个仅供参考,函数的命名如下:GetClassicConnection、GetRunAsConnection、Set-Subscription $subcriptName

所以这是我的问题:

  1. 有没有办法在这个 runbook powershell 脚本中获取所有引用函数的源代码?使用反汇编工具反汇编 .NET dll 之类的东西。

  2. 如何查看自动化帐户中现有模块的源代码,该模块在模块部分下的状态为“可用”。

4

1 回答 1

0

我还没有理由使用 Azure Runbooks,但是,PowerShellCore 已经是开源的,可以在GitHub 上查看。

话虽如此,您可以通过这种方式从本地 cmdlet 获取源代码......

Param
(
    [string]$CmdletName = (Get-Command -CommandType Cmdlet | 
    Out-GridView -Passthru)
)

# Get the DLL is it is a compiled cmdlet
'Getting DLL if the entered cmdlet name is a compiled cmdlet'
(Get-Command $CmdletName).DLL 

'Getting cmdlet details / source code'
$metadata = New-Object system.management.automation.commandmetadata (Get-Command $CmdletName)
[System.management.automation.proxycommand]::Create($MetaData)

注意:即使使用上述方法,我也遇到了一些 cmdlet 出错的问题。

例如,您可以通过这种方式从本地函数获取源代码...

Param
(
    [string]$FunctionName = (Get-Command -CommandType Function | 
    Out-GridView -Passthru)
)

(Get-Command -Name $FunctionName).ScriptBlock 

对于 dll,可以使用相同的方法查看任何其他 .Net dll,使用相同的工具、ILSpydotNetPeek

于 2018-11-13T01:35:16.993 回答