我有一个 PowerShell 代码块,它运行一个命令,然后对其进行按摩并将其写入一个文本文件。
$commandOutput = &"C:\Program Files (x86)\Dell EMC\Unity\Unisphere CLI\uemcli" -d $frame -noHeader /stor/config/pool/sr show
foreach ($idline in $commandOutput)
{
if ($idline -match ' ID ')
{
$subline = $idline.substring(6,($idline.length - 6))
$writeline = $subline.trim()
#$writeline
}
elseif ($idline -match 'Total pool space used')
{
$Sleft,$Sright = $idline.Split('(',2)
$writeline = $Sleft.trim()
# $writeline
# write-host ""
}
else {$writeline = $idline.trim()}
#$writeline
Add-Content -path $outdir\$frame-intrim.txt -value $writeline -Encoding UTF8
}
当我在 PowerShell 5.1 中运行它时,我得到:
ID = res_2
Name = asi-vcva-fs01
Resource type = VMware NFS
Pool = pool_1
Total pool space used = 18025199894528
Health state = OK (5)
当我在 PowerShell Core 7.1.4 中运行它时,我得到:
1 : I D = r e s _ 2
N a m e = a s i - v c v a - f s 0 1
R e s o u r c e t y p e = V M w a r e N F S
P o o l = p o o l _ 1
T o t a l p o o l s p a c e u s e d = 1 8 0 2 5 2 1 3 2 7 2 0 6 4 ( 1 6 . 3 T )
H e a l t h s t a t e = O K ( 5 )
这弄乱了脚本的其余部分。我尝试了 -Encoding UTF8 但没有任何改变。如何使它能够在 5.1 和 Core 7.1 中运行?
更多信息:
它以这种方式编写输出的原因是因为这是从输入中解析数据的方式。如何摆脱空格,特别是使其在两个版本的代码中都可用?