You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中检查指定类型是否已加载?

在PowerShell中检查.NET类型是否已加载的正确方法

先说说你之前方法的问题

  • 用Get-TypeData不对:这个命令获取的是PowerShell为.NET类型添加的扩展数据(比如自定义属性、脚本方法),并非已加载的.NET类型本身,所以永远返回"Not loaded"是正常的。
  • 示例2的[Type]::GetType参数错误:你传入的System.Net.Http是程序集名称,不是具体的类型全名,自然查不到对应结果。

正确的检查方法

方法1:检查单个具体类型是否已加载

需要指定完整的类型全名(比如System.Net.Http.HttpClientHandler),使用[Type]::GetType的正确写法:

$targetType = "System.Net.Http.HttpClientHandler"
# 第二个参数$false表示找不到类型时不抛出异常,返回null
$typeExists = [Type]::GetType($targetType, $false) -ne $null

if ($typeExists) {
    Write-Output "类型 $targetType 已加载"
} else {
    Write-Output "类型 $targetType 未加载,正在加载..."
    Add-Type -AssemblyName "System.Net.Http"
}

方法2:检查整个程序集是否已加载

如果要确认System.Net.Http这类整个程序集是否被加载,可以遍历当前应用域的已加载程序集:

$assemblyName = "System.Net.Http"
$assemblyLoaded = [AppDomain]::CurrentDomain.GetAssemblies() | 
    Where-Object { $_.GetName().Name -eq $assemblyName } -ne $null

if ($assemblyLoaded) {
    Write-Output "程序集 $assemblyName 已加载"
} else {
    Write-Output "程序集 $assemblyName 未加载,正在加载..."
    Add-Type -AssemblyName $assemblyName
}

补充说明

PowerShell中确实没有Get-Type这个Cmdlet,要检查.NET类型或程序集的加载状态,以上两种方法是直接有效的。如果只是想确保某个类型可用,你最开始的try/catch写法也能工作,但提前检查的方式更符合你的需求。

内容的提问来源于stack exchange,提问作者Jelphy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:18:22