确定 class 所在的模块

Determine in what module a class resides

我有一些代码在 ISE 中可以正常工作,但在脚本中却失败了。它在我使用 [System.Windows.Media.GlyphTypeface]::new() 的地方失败了,这是一种常见的情况,一个在 ISE 中自动加载的模块,但需要在脚本中单独加载。 所以这就提出了一个通用的问题,有没有办法从类型开始并确定需要什么模块?或者这是您只需要知道的其中之一 and/or 能够挖掘 Microsoft 支持文档以获取信息?

System.Windows.Media.GlyphTypeface 不是 PowerShell 模块。它是一个 .NET Framework class。您通常需要查看 class 的文档以找到它所属的程序集。 (https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.glyphtypeface) 在这种情况下 PresentationCore.dll.

您将使用 AddType 加载此程序集。

Add-Type -AssemblyName PresentationCore

搜索“find .net assembly from class name”将找到关于此主题的一些问答,但主要是 C# 示例。