2014-02-17 2 views
0

Я пытаюсь создать файл журнала, который редактируется определенным образом.Вызов конкретных свойств WMI Powershell Свойства объекта

Я не уверен, как отобразить конкретные свойства объектов, которые я получаю от WMI. Я считаю, что мне нужно включить объект-объект или объект foreach, но мой google-foo пока не был достаточно сильным.

Вот то, что я до сих пор:

$LogPath = "$HOME\Documents\logs" 
$LogFilePath = "$HOME\Documents\Logs\log1.log" 
$DiskInfo = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" 
$BiosInfo = Get-wmiobject win32_Bios 
$AppInfo = Get-WmiObject -Class Win32_Product 


Write-Output "Summary Information for computer $computername on $Date" |Out-file -append -FilePath $LogFilePath 
Write-Output "=============================================================== " | Out-file -append -filepath $LogFilePath 

Write-Output "Disk Drive Summary" |out-file -append $LogFilePath 
Write-Output "=======================================================================" | out-file -append -filepath $LogFilePath 
Write-Output "Model             Size" | Out-file -append -filepath $LogFilePath 
write-Output "--------            ------" | Out-file -append -filepath  $LogFilePath  
Write-Output "$diskinfo.deviceid          $diskinfo.size" | out-file -append -filepath $LogFilePath 


Write-Output "BIOS Version Summary" |out-file -append -filepath $LogFilePath 
Write-Output "=======================================================================" | out-file -append -filepath $LogFilePath 
Write-Output $biosinfo|out-file -append -filepath $LogFilePath 

ответ

0

Имейте в виду, что это будет зависеть от того, или нет, вы получаете несколько экземпляров класса WMI обратно из Get-WmiObject команды или нет.

Если вы хотите получить информацию логического диска для c:\ диска, то вы можете сделать следующее:

$Disk = Get-WmiObject -Class Win32_LogicalDisk -Filter "Name = 'c:'"; 
$Disk.FreeSpace; # In bytes 
$Disk.Size; # In bytes 

Если вы хотите получить информацию BIOS, выполните следующие действия:

$BIOS = Get-WmiObject -Class Win32_BIOS; 
$BIOS.SMBIOSBIOSVersion; 
$BIOS.SerialNumber; 

В двух до Например, мы имеем дело только с одним экземпляром класса WMI: 1) один экземпляр «логического диска» и 2) один экземпляр «BIOS». Если вы получаете несколько экземпляров WMI обратно (., Например, несколько объектов принтера), вам придется перебирать каждый экземпляр, используя foreach цикл:

$PrinterList = Get-WmiObject -Class Win32_Printer; 
foreach ($Printer in $PrinterList) { 
     $Printer.Name; 
} 

На стороне записки, я бы рекомендовал избегать использования Win32_Product Класс WMI, поскольку он странно вызывает восстановление всех программных пакетов MSI (Windows Installer). Для получения дополнительной информации об этой проблеме см. Эту запись в блоге: http://myitforum.com/cs2/blogs/gramsey/archive/2011/01/25/win32-product-is-evil.aspx

Смежные вопросы