【问题标题】:Formatting piped results from script格式化来自脚本的管道结果
【发布时间】:2013-11-06 20:02:25
【问题描述】:

我有以下用 Powershell 编写的脚本,它在服务器上查找快照并根据其发现报告一封电子邮件:

Connect-ViServer server
$body = Get-Folder -name vm | Get-VM | Get-Snapshot | Select Name, VM, SizeMb, Created | Out-String 
send-mailmessage -From "myemail.com" -To "myemail.com" -SmtpServer "myserver.com" -Body $body -Subject "Snapshot Report"

我从中得到的输出如下所示:

Name                VM                       SizeMB Created            
----                --                       ------ -------            
snapshot name       server       ...3507232666015625 11/6/2013 11:53...
snapshot name       server       ...4918060302734375 11/6/2013 10:30...
snapshot name       server...    ...0483551025390625 11/6/2013 10:32:...
snapshot name       server       ...2000579833984375 11/6/2013 3:58:34 PM

我认为必须有一种方法将输出格式化为准确显示大小(以兆字节为单位,最多只有 2 位小数)并显示创建的整个时间。我知道我的问题在这里的某个地方:

| Select Name, VM, SizeMb, Created | out-string

有谁知道如何格式化 Select 的输出以指定最多 2 位小数?

【问题讨论】:

    标签: powershell formatting piping powercli


    【解决方案1】:

    在大小前使用"{0:N2} -f"。我认为你可以这样做:

    | Select Name, VM, @{n="Size";e{"{0:N2}" -f $_.SizeMb}}, Created | out-string
    

    更多关于 Powershell 中数字格式的信息here

    【讨论】:

    • 觉得你有一个小错误,应该是 e={"{0:N2}"..... 但我明白你在说什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多