Сортиране и форматиране в имейл

Нов съм в Powershell и се опитвам да изпратя изхода по имейл на следната част от кода, ако го изпратя на конзолата, той е добре форматиран, но когато го прехвърля в имейл, извлечените обекти са не са подредени.

$bios = Get-WmiObject Win32_BIOS -ComputerName localhost
$os = Get-WmiObject `Win32_OperatingSystem -ComputerName localhost
$Proc = Get-WmiObject Win32_processor -ComputerName localhost | Select-Object -First 1
$memory = Get-WmiObject Win32_physicalmemory -ComputerName localhost
$system = Get-WmiObject Win32_ComputerSystem -ComputerName localhost

$Systeminfo = New-Object PSObject -Property @{
'ComputerName' = $proc.SystemName;
'Manufacturer' = $bios.Manufacturer;
'Model' = $system.Model;
'BIOS Version' = $bios.Version;
'Serial Number' = $bios.SerialNumber;
'Number of Processors ' = $system.NumberOfProcessors;
'Processor Name' = $proc.name;
'Logical Processor' = $system.NumberOfLogicalProcessors;
'Speed (MHZ)' = $proc.CurrentClockSpeed;
'RAM (GB)' = $system.TotalPhysicalMemory / 1GB -as [int];
'Used RAM slots' = $memory.count;
'OSVersion' = $os.Caption
}
$Systeminfo = $Systeminfo | Out-String

Освен това има ли начин да пренаредите реда, в който се появяват, например, бих искал името на компютъра да е първо в масива, но то се появява в средата?


person AlanT    schedule 05.02.2015    source източник


Отговори (1)


Ако имате PowerShell 3.0, можете да създадете обекта с помощта на [ordered]

$Systeminfo = [pscustomobject][ordered] @{
'ComputerName' = $proc.SystemName;
'Manufacturer' = $bios.Manufacturer;
'Model' = $system.Model;
'BIOS Version' = $bios.Version;
'Serial Number' = $bios.SerialNumber;
'Number of Processors ' = $system.NumberOfProcessors;
'Processor Name' = $proc.name;
'Logical Processor' = $system.NumberOfLogicalProcessors;
'Speed (MHZ)' = $proc.CurrentClockSpeed;
'RAM (GB)' = $system.TotalPhysicalMemory / 1GB -as [int];
'Used RAM slots' = $memory.count;
'OSVersion' = $os.Caption
}

Това трябва да изведе свойствата в реда, в който са дефинирани. В противен случай ще трябва да използвате оператор select, за да поръчате свойствата, които искате.

$Systeminfo | Select-Object ComputerName,Manufacturer,Model,"BIOS Version","Serial Number","Number of Processors","Processor Name","Logical Processor","Speed (MHZ)","RAM (GB)","Used RAM slots",OSVersion 
person Matt    schedule 05.02.2015