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

PowerShell中Get-WmiObject文件位置查询及代码修改可行性咨询

关于PowerShell中Get-WmiObject的相关问题

1. Get-WmiObject的文件位置

Get-WmiObject并非独立的脚本或可执行文件,它是PowerShell的内置Cmdlet,核心实现代码包含在PowerShell的系统.NET程序集中(如System.Management.Automation.dll),相关文件的默认路径如下:

  • Windows PowerShell(v1.0):C:\Windows\System32\WindowsPowerShell\v1.0
  • PowerShell 7+(跨平台版本):默认安装目录下的核心程序集,比如C:\Program Files\PowerShell\7

你可以通过以下命令查看它的归属模块及模块路径:

# 查看Cmdlet的来源模块
Get-Command Get-WmiObject | Select-Object Source, CommandType
# 查看模块的安装路径
Get-Module Microsoft.PowerShell.Management | Select-Object ModuleBase

2. 修改Get-WmiObject实现自定义功能是否可行?如何操作?

直接修改内置Cmdlet的底层代码不可行——系统程序集带有数字签名,修改后会破坏签名导致PowerShell拒绝加载,且这类文件受系统保护,强行修改可能引发稳定性问题。但可以通过以下合法方式实现自定义需求:

方式一:创建同名函数覆盖内置Cmdlet

编写一个与Get-WmiObject同名的PowerShell函数,让它优先于内置Cmdlet执行,在函数内调用原Cmdlet并修改输出:

function Get-WmiObject {
    # 调用原始Cmdlet,保留所有传入参数
    $originalOutput = Microsoft.PowerShell.Management\Get-WmiObject @PSBoundParameters
    # 自定义修改逻辑,比如添加新属性、过滤结果
    $modifiedOutput = $originalOutput | Select-Object *, @{Name='CustomTag'; Expression={'自定义标记'}}
    # 返回修改后的结果
    return $modifiedOutput
}

将这个函数保存到你的PowerShell配置文件(执行$PROFILE可查看路径),每次启动PowerShell都会自动加载。若需临时恢复原Cmdlet,执行Remove-Item function:Get-WmiObject即可。

方式二:创建独立包装函数

如果不想覆盖原Cmdlet,可创建一个新函数封装逻辑,比如Get-CustomWmiObject:

function Get-CustomWmiObject {
    # 复制原Cmdlet的参数定义
    param(
        [Parameter(Mandatory=$true)]
        [string]$Class,
        [string]$ComputerName
        # 按需添加其他参数
    )
    $originalResult = Get-WmiObject -Class $Class -ComputerName $ComputerName
    # 自定义输出处理,比如修改字段格式、过滤结果
    $originalResult | Where-Object { $_.State -eq 'Running' } | Select-Object Name, ProcessId, @{Name='MemUsageMB'; Expression={[math]::Round($_.WorkingSetSize/1MB, 2)}}
}

方式三:临时管道处理输出

如果仅需修改单次命令的输出,无需修改Cmdlet本身,直接通过管道结合Select-Object、ForEach-Object处理即可:

# 示例:修改Win32_Process的输出,将内存占用转为MB单位
Get-WmiObject -Class Win32_Process | Select-Object ProcessId, Name, @{Name='MemMB'; Expression={[math]::Round($_.WorkingSetSize/1MB,2)}}

注意:切勿尝试修改系统自带的PowerShell程序集或模块文件,这会导致系统兼容性问题,且Windows系统下这类文件通常无法直接编辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:24:25