有没有办法确定在Powershell模块中使用哪些外部装配方法?

时间:2015-03-23 16:06:19

标签: powershell

我目前有一个Powershell模块,它引用了几个外部程序集。除了手动查看模块之外,还有一种方法可以确定使用这些外部程序集中的哪些方法?我有一套针对此模块的Pester单元测试,我想确保所有外部依赖项都在测试中。

1 个答案:

答案 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。