背景
上周我正在研究我的 Linux WSL,我正在使用 PowerShell Core。试图了解如何使用 WMI 监视远程计算机,就像我们在 Windows PowerShell 中所做的那样。不幸的是,PowerShell Core 没有 Get-WmiObject cmdlet。
一个快速的谷歌搜索让我找到了 wmic 实用程序,它可以下载并安装在任何 Linux 机器上。您可以查询远程 Windows 机器 WMI 并使用 PowerShell 方式输出。
您可以使用Simon Smith的指南安装 wmic 。
wmic 在行动
您可以简单地运行 wmic 命令来查看基本命令语法。
下面的命令获取 Win32_ComputerSystem 类。
1
|
wmic --user=administrator --password=ComplexPassword //DESKTOP-4OFD7A0 "SELECT * FROM Win32_ComputerSystem"
|
在这里,您可以使用 bash 解析字符串输出或使用简单的方法。PowerShell方式!
PowerShell 为字符串操作带来了许多底层工具。您可以将 wmic 命令输出存储到变量并使用 .Split() 方法拆分字符串。例如:
您可以使用索引访问所有值并选择要选择的任何值来创建所需的输出。
您还可以使用相同的方法编写脚本来获取远程 Windows 机器的磁盘使用情况:
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,您可以轻松地处理输出并创建可重用的代码。
希望这是有用的