2011-05-31 38 views
0

我正在尝试创建一个脚本来制作我的PC的硬件清单并将其导出到excel中。在Excel单元格中列出硬盘驱动器

我列出硬盘驱动器有一些问题。假设一台PC有两个分区,C为100 GB,E为200 GB。我想用这种方式将驱动器放在一个单元格内,并带回车。

C: 100 GB 
E: 200 GB 

如果我想创建一个Excel文件,我可以做这样的事情

$a = New-Object -comobject Excel.Application 
$a.Visible = $True 
$b = $a.Workbooks.Add() 
$c = $b.Worksheets.Item(1) 
$c.Cells.Item(1,1) = "A value in cell A1." 

,我知道我可以查询WMI列出硬盘:

gwmi win32_logicaldisk | ? {$_.drivetype -eq 3} | select deviceid,@{Label="Disk GB"; Expression={[math]::truncate($_.Size/1GB)}} 

,但我不不知道如何得到我想要的结果。提前致谢。

回答

0

这是如何工作的?

$a = New-Object -comobject Excel.Application 
$a.Visible = $True 
$b = $a.Workbooks.Add() 
$c = $b.Worksheets.Item(1) 
$label=gwmi win32_logicaldisk | select deviceid,@{Label="Disk GB"; Expression={"$([math]::truncate($_.Size/1GB)) GB"}} | ft -auto -HideTableHeaders | out-string 
$c.Cells.Item(1,1) = $label 
0

您可以遍历来自WMI查询返回的驱动器,并将deviceid和“Disk GB”结果添加到字符串值。然后,您可以将结果字符串值写入Excel单元格。一种方法是这样的:

$a = New-Object -comobject Excel.Application 
$a.Visible = $True 
$b = $a.Workbooks.Add() 
$c = $b.Worksheets.Item(1) 
$outputstring = "" 
foreach ($drive in $driveinfo) { 
    $outputstring += "$($drive.deviceid) $($drive."Disk GB") GB`n" 
} 
$c.cells.item(1,1) = $outputstring