首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向PowerShell表格结果中添加文本?

如何向PowerShell表格结果中添加文本?
EN

Stack Overflow用户
提问于 2018-01-15 17:01:01
回答 3查看 1.5K关注 0票数 1

我正在尝试弄清楚如何向PowerShell表中的结果添加一些文本,比如MHz或GB。是否可以使用foreach循环?

代码语言:javascript
复制
Get-WmiObject Win32_PhysicalMmory |
    Format-Table Banklabel, Manufacturer,
        @{Label="Speed"; Expression={$_.ConfiguredClockSpeed}},
        @{Label="Capacity"; Expression={[int64]($_.Capacity/1GB)}} -AutoSize

我有另一种接近的方法,但不会处理多个结果,因为它不会将信息添加到新行中。

代码语言:javascript
复制
$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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-15 17:08:13

使用串联来满足您的需求。

替换

代码语言:javascript
复制
Get-WmiObject win32_physicalmemory | Format-Table Banklabel, Manufacturer, @{Label="Speed";` Expression={$_.ConfiguredClockSpeed}}, @{Label="Capacity";` Expression={[INT64]($_.Capacity/1GB)}} -autosize

有了这个:

代码语言:javascript
复制
Get-WmiObject win32_physicalmemory | Format-Table Banklabel, Manufacturer, @{Label="Speed";` Expression={"$($_.ConfiguredClockSpeed) MHz"}}, @{Label="Capacity";` Expression={"$([INT64]($_.Capacity/1GB)) GB"}} -autosize

希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-01-15 17:08:19

您可以使用更复杂的表达式,请参见以下示例:

代码语言:javascript
复制
Get-WmiObject win32_physicalmemory | Format-Table Banklabel, Manufacturer, @{Label="Speed";`
  Expression={$_.ConfiguredClockSpeed}}, @{Label="Capacity";`
  Expression={([INT64]($_.Capacity/1GB)).ToString()+" GB"}} -autosize
票数 2
EN

Stack Overflow用户

发布于 2018-01-15 17:15:30

因为您已经在使用计算属性,所以很容易扩展它们。这取决于你试图实现的目标。我建议将单位放在表头中,如下所示:

代码语言:javascript
复制
Get-WmiObject win32_physicalmemory | 
    Select-Object -Property Banklabel, Manufacturer, @{Name='Speed in MHz';Expression={$_.ConfiguredClockSpeed}}, @{Name='Capacity in GB'; Expression={[INT64]($_.Capacity/1GB)}}

如果你真的需要它在表格中,你可以这样做:

代码语言:javascript
复制
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)}}

但是这样你就失去了用你的结果计算的可能性。现在只有字符串了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48259703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档