gpt4 book ai didi

powershell - 通过 VBScript 和 PowerShell 使用 WMI 时的区别

转载 作者:行者123 更新时间:2023-12-01 11:56:17 25 4
gpt4 key购买 nike

我有一个带有 Power Shell 的 Windows XP SP3 全新安装测试。如果我从 PowerShell 和 VBScript 访问 WMI,这是一个非常奇怪的区别。来自 powershell:

Get-WmiObject 'Win32_OperatingSystem" | select Caption

这会正确显示“Windows XP Professional”。以及用 VBScript 编写的相同代码:

WScript.Echo( GetObject( "winmgmts:Win32_OperatingSystem" ).Caption )

显示“空”O_O。为什么会这样?

最佳答案

这是 VBScript 的等价物:

Set wmi = GetObject("winmgmts:")
Set objSet = wmi.InstancesOf("Win32_OperatingSystem")

For Each obj in objSet
WScript.Echo obj.Caption
Exit For
Next

虽然只有一个操作系统,但 WMI 查询总是返回一个列表。

好的,现在,区别 - 使用 Get-WmiObject cmdlet,因为只有一个操作系统,当您执行 Get-WmiObject 时,您直接获取对象而不是列表"Win32_OperatingSystem"(使用 GetType 可以看出这实际上是 System.Management.ManagementObject 类型)

因为会有多个进程,get-wmiobject win32_process 会给出一个数组。 (使用 GetType 可以看出这是 System.Object[]

类型

以下不会给出任何输出:

(get-wmiobject win32_process).Caption

而下面会:

(get-wmiobject win32_process)[0].Caption

关于powershell - 通过 VBScript 和 PowerShell 使用 WMI 时的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com