Вот эквивалент 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
, поскольку существует только одна операционная система, вы получаете объект напрямую, а не список, когда вы делаете 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