我正在试图找出如何在PowerShell表中为结果添加一些文本(如MHz或GB)。是否可以使用foreach
循环?
Get-WmiObject Win32_PhysicalMmory |
Format-Table Banklabel, Manufacturer,
@{Label="Speed"; Expression={$_.ConfiguredClockSpeed}},
@{Label="Capacity"; Expression={[int64]($_.Capacity/1GB)}} -AutoSize
我有另一种接近的方式,但是不能使用多个结果,因为它不会将信息添加到新行中。
$Disk = Get-WmiObject -Class Win32_LogicalDisk
$DiskSpace = [int64]($Disk.Size/1GB)
$FreeSpace = [INT64]($Disk.FreeSpace/1GB)
$UsedSpace = (($DiskSpace-$FreeSpace)/$DiskSpace).ToString("P0")
$OBJ = New-Object PSObject
$OBJ | Add-Member NoteProperty "ID" ($Disk.DeviceID)
$OBJ | Add-Member NoteProperty "Name" ($Disk.VolumeName)
$OBJ | Add-Member NoteProperty "Format" ($Disk.FileSystem)
$OBJ | Add-Member NoteProperty "Capacity" ("$DiskSpace-GB")
$OBJ | Add-Member NoteProperty "Free Space" ("$FreeSpace-GB")
$OBJ | Add-Member NoteProperty "Used" ($UsedSpace)
Write-Output $OBJ | Format-Table
答案 0 :(得分:1)
根据您的要求使用串联。
替换
Get-WmiObject win32_physicalmemory | Format-Table Banklabel, Manufacturer, @{Label="Speed";` Expression={$_.ConfiguredClockSpeed}}, @{Label="Capacity";` Expression={[INT64]($_.Capacity/1GB)}} -autosize
用这个:
Get-WmiObject win32_physicalmemory | Format-Table Banklabel, Manufacturer, @{Label="Speed";` Expression={"$($_.ConfiguredClockSpeed) MHz"}}, @{Label="Capacity";` Expression={"$([INT64]($_.Capacity/1GB)) GB"}} -autosize
希望它有所帮助。
答案 1 :(得分:1)
您可以使用更复杂的表达式,请参阅以下示例:
Get-WmiObject win32_physicalmemory | Format-Table Banklabel, Manufacturer, @{Label="Speed";`
Expression={$_.ConfiguredClockSpeed}}, @{Label="Capacity";`
Expression={([INT64]($_.Capacity/1GB)).ToString()+" GB"}} -autosize
答案 2 :(得分:0)
因为您已经使用了计算属性,所以很容易扩展它们。这取决于你试图实现的目标。我建议将该单元放入表格标题中,如下所示:
Get-WmiObject win32_physicalmemory |
Select-Object -Property Banklabel, Manufacturer, @{Name='Speed in MHz';Expression={$_.ConfiguredClockSpeed}}, @{Name='Capacity in GB'; Expression={[INT64]($_.Capacity/1GB)}}
如果你真的需要它,你可以这样做:
Get-WmiObject win32_physicalmemory |
Select-Object -Property Banklabel, Manufacturer, @{Name='Speed';Expression={"{0} MHz" -f $_.ConfiguredClockSpeed}}, @{Name='Capacity in GB'; Expression={"{0} GB" -f [INT64]($_.Capacity/1GB)}}
但是这样你就无法用你的结果来计算。它现在只是字符串。