0

Итак, я работаю над сценарием инвентаря для наших серверов и попал в блокнот на хранилище. Вот код:Проблема с форматированием выходных данных Powershell

$StorageInfo=Get-WmiObject win32_volume | Where-Object {$_.DriveType -eq 3 -and $_.Label -ne 'System Reserved' -and $_.DriveLetter -ne $null} 

$DriveLetters=$StorageInfo | Select-Object DriveLetter | Sort-Object DriveLetter | ft -HideTableHeaders 
$DriveNames=$StorageInfo | Sort-Object DriveLetter | Select-Object Label | ft -HideTableHeaders 
$DriveCapacity=$StorageInfo |Sort-Object DriveLetter | ForEach-Object {[Math]::Truncate($_.Capacity/1GB)} 

$DriveLetters 

$DriveNames 

$DriveCapacity 

данные, которые поступают от заключается в следующем:

C:                                                 
D:                                                 
E:                                                 
F:                                                 
G:                                                 

OSDisk                                                
Data                                                 
SQL Data                                                
SQL Logs                                                
SQL Temp                                                

232 
97 
97 
97 
48 

Я хотел бы иметь возможность отформатировать его как таковой:

C:\, OSDisk - 232gb 
D:\, Data - 97gb 
C:\, SQLData - 97gb 
C:\, SQLLogs - 97gb 
C:\, SQLTemp - 97gb 

.. и я не могу это понять. Может ли кто-нибудь предложить помощь?

ответ

2

Попробуйте так:

Get-WmiObject win32_volume -Filter "DriveType=3 AND Label <> 'System Reserved' AND DriveLetter IS NOT NULL" | 
Select-Object Name,Label,@{Name='CapacityGB';E={[Math]::Truncate($_.Capacity/1GB)}} 

Если вы хотите точные результаты, как описано (спасибо Ansgar):

Get-WmiObject win32_volume -Filter "DriveType=3 AND Label <> 'System Reserved' AND DriveLetter IS NOT NULL" | ForEach-Object{ 
    "{0}, {1} - {2}gb" -f $_.Name,$_.Label,([Math]::Truncate($_.Capacity/1GB)) 
} 
+0

Используйте '" {0} \ {1} - { 2} "-f (DriveLetter, Label, @ {Name = '...})' вместо 'Select-Object ...', чтобы получить конкретный выходной формат. –

+0

Я буду работать над этим снова в конце этой недели. Я дам вам знать, как это происходит. Спасибо за ответы, ребята! –

0
$logfile = <log file path> 
$path = <path of the file to which we need to sort> 
$Array = gc $path 
$Count = $Array.Count 
for($i=0; $i -le $Count; $i++) 
{ $a =$Array[$i] 
$i = $i+1 
write-output $i | out-file $logfile 
$a+=" "+ $Array[$i] 
$i = $i+1 
write-output $i | out-file $logfile 
$a+=" "+ $Array[$i] 
write-output $i | out-file $logfile 
$New = $a | Select-Object -Unique #| out-file $logfile } 
Смежные вопросы