如何删除Powershell中的前导和尾随空格?
我在哪里运行以下命令:
Write-Host '"os":"'(Get-CimInstance -ClassName CIM_OperatingSystem).Caption'",'
我得到以下输出:
"os":" Microsoft Windows 10 Pro ",
如何删除输出中的前导和尾随空格?
回答
这是因为您将 3 个不同的字符串参数传递给Write-Host,然后 cmdlet 将它们用空格分隔:
Write-Host '"os":"'(Get-CimInstance -ClassName CIM_OperatingSystem).Caption'",'
______/______________________________________________________/__/
改成
Write-Host """os"":""$((Get-CimInstance -ClassName CIM_OperatingSystem).Caption)"","
在这里,我们使用正确转义的引号创建 1(一个!)字符串,并且Write-Host不会尝试添加任何空格。
如果目标是生成 JSON,我建议构建一个新对象并让ConvertTo-Json其余部分处理:
$data = [pscustomobject]@{
os = (Get-CimInstance -ClassName CIM_OperatingSystem).Caption
}
$data |ConvertTo-Json
其输出将类似于:
{
"os": "Microsoft Windows 10 Enterprise"
}
- 做得很好; 还值得一提的是,`Write-Host` 永远不应该用于输出 _data_。