Linux 和 PowerShell Core 上的 WMI

本文介绍了如何在Linux的Windows子系统(WSL)中使用wmic命令行工具来替代PowerShellCore的Get-WmiObject cmdlet,从而远程查询Windows计算机的WMI信息。通过安装wmic并在bash中解析输出,可以获取如Win32_ComputerSystem和Win32_LogicalDisk等类的信息,实现类似PowerShell的磁盘使用情况监控。这种方法对于熟悉PowerShell的用户来说,提供了在Linux环境中便捷访问远程Windows机器WMI的途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

上周我正在研究我的 Linux WSL,我正在使用 PowerShell Core。试图了解如何使用 WMI 监视远程计算机,就像我们在 Windows PowerShell 中所做的那样。不幸的是,PowerShell Core 没有 Get-WmiObject cmdlet。

一个快速的谷歌搜索让我找到了 wmic 实用程序,它可以下载并安装在任何 Linux 机器上。您可以查询远程 Windows 机器 WMI 并使用 PowerShell 方式输出。

您可以使用Simon Smith的指南安装 wmic 。

wmic 在行动

您可以简单地运行 wmic 命令来查看基本命令语法。

下面的命令获取 Win32_ComputerSystem 类。

PowerShell
1
wmic --user=administrator --password=ComplexPassword //DESKTOP-4OFD7A0 "SELECT * FROM Win32_ComputerSystem"

在这里,您可以使用 bash 解析字符串输出或使用简单的方法。PowerShell方式!

PowerShell 为字符串操作带来了许多底层工具。您可以将 wmic 命令输出存储到变量并使用 .Split() 方法拆分字符串。例如:

您可以使用索引访问所有值并选择要选择的任何值来创建所需的输出。

您还可以使用相同的方法编写脚本来获取远程 Windows 机器的磁盘使用情况:

PowerShell
1
2
3
4
5
6
7
8
9
#! /bin/pwsh
$ComputerName = 'DESKTOP-4OFD7A0'
    $disks = wmic --user=administrator --password=ComplexPassword //$ComputerName "SELECT * FROM Win32_LogicalDisk" | Select-Object -Skip 2
    foreach($disk in $disks){
        $driveLetter = $disk.Split('|')[3]
        $driveTotalSpace =  [math]::round(($disk.Split('|')[30]/1GB),2)
        $driveFreeSpace =  [math]::round(($disk.Split('|')[15]/1GB),2)
        Write-Host "Disk Usage for " $driveLetter " " $driveFreeSpace " free out of " $driveTotalSpace
    }

当您需要从 linux 机器访问远程机器的 WMI 实例时,这种方法会非常方便。如果您熟悉 PowerShell,您可以轻松地处理输出并创建可重用的代码。

希望这是有用的

### Powershell 与 Terminal 的功能对比 #### 功能特性 PowerShell 是一种基于 .NET PowerShell Core 技术的任务自动化配置管理框架,它不仅是一个命令行外壳程序,还是一种脚本语言。其设计目标是帮助管理员更高效地管理操作操作系统以及应用程序[^1]。相比之下,Linux 终端通常默认使用 Bash Shell 或其他类似的 Unix 风格 shell(如 Zsh),这些工具主要依赖于传统的 Unix 工具链来完成任务。 对于 Windows 用户,默认情况下会提供 PowerShell 作为集成终端的一部分;而对于 Linux 用户,则更多时候预设的是 Bash Shell。不过,在现代开发环境中,无论是哪种平台,都可以通过特定设置切换到不同的 shell 程序。 #### 使用场景分析 当涉及到具体应用场景时,两种环境各有千秋: - **Windows 平台上的优势** - 在处理 Microsoft 生态圈内的资源服务方面表现出色,比如 Active Directory、Exchange Server 等微软产品线中的组件。 - 提供了丰富的 cmdlet (即小型专用命令),可以直接调用 WMI 查询或者 COM 对象来进行深层次的操作。 - **跨平台兼容性考量** - 如果项目需要支持多操作系统部署的话,那么采用 POSIX 标准遵循较好的解决方案可能更加合适一些,这正是许多开源软件所倾向的方向之一。 - 虽然现在有了 cross-platform 版本的 PowerShell Core 可用于 macOS/Linux 上运行,但在某些特殊领域里仍然无法完全取代原生 bash/zsh 所具备的能力。 #### 开发者偏好因素 从开发者角度来看,选择哪个取决于个人习惯技术需求: - 喜欢图形界面辅助调试的朋友可能会倾向于利用 Visual Studio Code 中嵌入式的 powerfull console 来简化日常工作流程; - 而那些追求极致效率并熟悉传统 UNIX philosophy 的工程师则往往坚持使用简洁明快的传统 terminals 加上自定义 alias/functions 实现快速输入效果. ```bash # Example of using bash command in terminal ls -l | grep ".txt" # Equivalent example with PowerShell commands Get-ChildItem *.txt | Format-List ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值