我是Powershell和Azure自动化的新手。目前,我有一个Azure自动化帐户,并且它的Runbook作业很少。我试图通过更新其Powershell脚本向现有的Azure Runbook作业添加新的逻辑。我看到有一些函数,但是很遗憾,我们没有维护源代码:(。由于runbook当前正在运行,没有任何问题,我想知道如何获取所引用函数的源代码。
我在此运行手册使用的“自动化帐户”中以及“资产”,“ cmdlet”和“运行手册”节点(在Portal的脚本的“编辑”模式下看到)下的模块,模块库,python 2软件包等中进行了搜索。但找不到这些功能的引用位置。我看到一个模块,我怀疑其中有一些相关但不确定的模块。
作为FYI,函数的命名如下: GetClassicConnection, GetRunAsConnection, 设置订阅$ subcriptName
这是我的问题:
在此runbook powershell脚本中是否可以获取所有引用函数的源代码?诸如使用反汇编器工具反汇编.NET dll之类的东西。
如何在“模块”部分下将其状态显示为“可用”的自动化帐户中查看现有模块的源代码。
答案 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,它们是相同的工具,ILSpy或dotNetPeek等