在获取从电子邮件转换为可读报告的 csv 时遇到问题,该脚本主要起作用,但当我尝试使用脚本将它们移动到相应的列时,它会在所有三列中返回 System.Object[] 而不是值。上面的图片是我的源文件,第二个图片是当前的输出。
代码
$inputcsv = 'C:\Users\Testing\04052024\4032024 DTV Report input.csv'
$outputcsv = 'C:\Users\Testing\04052024\4052024 724 Report Output1122.csv'
$data = Get-Content $inputcsv
$parsedData = @()
for ($i = 0; $i -lt $data.Count; $i += 2) {
$siteSelection = $data[$i] -replace "Midtier: lcahncr1.lcahncrkc.net Site selection: ", ""`
-replace 'Midtier: lcahncr2.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr3.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr4.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr5.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr6.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr7.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr8.lcahncrkc.net Site selection:',''`
-replace 'Midtier: lcahncr9.lcahncrkc.net Site selection:',''
$components = $data[$i+1] -split ", "
$functionalDevices = ($components | Where-Object {$_ -match "Functional Devices=\d+" }) -replace "Functional Devices=", ""
$NotfunctionalDevices = ($components | Where-Object {$_ -match "Not Functional Devices=\d+" }) -replace "Not Functional Devices=", ""
$TotalDevices = ($components | Where-Object {$_ -match "Total Devices=\d+" }) -replace "Total Devices=", ""
$parsedObject = [PSCustomObject]@{
Site= $siteSelection
"Functional Devices" = $functionalDevices
"Not Functional Devices" = $NotfunctionalDevices
"Total Devices" = $TotalDevices
}
$parsedData += $parsedObject
}
$parsedData | Export-Csv -Path $outputcsv -NoTypeInformation
无法测试,但 powershell 似乎无法将数组解释为单个值,这就是您看到“System.Object[]”结果的原因。
它被视为一个数组而不是单个字符串/整数。
尝试用
Select-Object -First 1
管道它
所以它们看起来像
$functionalDevices = ($components | Where-Object {$_ -match "Functional Devices=\d+" }) -replace "Functional Devices=", "" | Select-Object -First 1
等等