获取Azure Runbook中引用函数的源代码

时间:2018-11-12 23:58:13

标签: azure powershell azure-automation runbook

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

我在此运行手册使用的“自动化帐户”中以及“资产”,“ cmdlet”和“运行手册”节点(在Portal的脚本的“编辑”模式下看到)下的模块,模块库,python 2软件包等中进行了搜索。但找不到这些功能的引用位置。我看到一个模块,我怀疑其中有一些相关但不确定的模块。

作为FYI,函数的命名如下:     GetClassicConnection,     GetRunAsConnection,     设置订阅$ subcriptName

这是我的问题:

  1. 在此runbook powershell脚本中是否可以获取所有引用函数的源代码?诸如使用反汇编器工具反汇编.NET dll之类的东西。

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

1 个答案:

答案 0 :(得分:0)

我还没有理由使用Azure Runbook,但是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