我目前有一个Powershell模块,它引用了几个外部程序集。除了手动查看模块之外,还有一种方法可以确定使用这些外部程序集中的哪些方法?我有一套针对此模块的Pester单元测试,我想确保所有外部依赖项都在测试中。
答案 0 :(得分:0)
您说您正在尝试检查PowerShell模块。
如果PS模块是脚本模块(.psm1),您可以检查脚本内容并跟踪每个命令。
使用Get-Command命令查找哪个DLL是位于的命令。
get-command test-path | fl DLL
DLL : C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\v4.0_3.0.0.0__31bf3856ad
364e35\Microsoft.PowerShell.Commands.Management.dll
使用Trace-Command检查依赖项。
Trace-Command –Name CommandDiscovery –Expression {Your code here..} -PSHost
使用*作为Name参数将显示所有信息。
Trace_Command -Name *
可以在Trace Your Commands by Using Trace-Command
找到良好的起始参考在您的评论中,您提到您试图跟踪声明
[System.IO.File]::Exists($filePath)
因为这不是PowerShell命令,而是直接调用.NET dll方法,所以上述方法不起作用。
您必须使用“Reflector”软件检查.NET程序集。其中有很多,我个人喜欢ILSpy,这是免费的。
这同样适用于PS二进制模块(DLL)。使用“Reflector”软件打开,反编译和检查DLL。