我似乎无法将Foreach的结果导出为csv甚至txt文件。它要求我输入或只是一个空白文件
代码所做的是导入两个csv,它们具有相同的值,但最终存在差异或缺少值,比较它们并返回结果
function compare {
#Declaring vars
$csv3 = "C:\Users\xxxxxxxx\Desktop\file3.csv"
$csv1 = Import-Csv -Path "C:\Users\xxxxxxxx\Desktop\file.csv"
$csv2 = Import-Csv -Path "C:\Users\xxxxxxxx\Desktop\file2.csv"
#Start of the main block
echo "Running..."
Compare-Object $csv1 $csv2 -IncludeEqual -Property Name,Size,Version,FullName,LastWriteTime |
ForEach-Object {
If( $R.sideindicator -ne "==" ){
[PSCustomObject]@{
Name = ($_.Name)
Srv1 = ($_.FullName, $_.Size,$_.LastWriteTime, $_.Version)
Srv2 = ($csv2 | Select-object -Property ($_.FullName, $_.Size,$_.LastWriteTime), @{Name="Version";Expression={$_.Version -replace "",'empty'}})
}
}
}
}
这是输出之一
Name Srv1 Srv2
---- ---- ----
caqs_.exe \application\caqs_.exe,26,4469604492188,27/01/2020 17:00:23,5, 82, 254, 0 {@{\application\caqs_.exe,26,4469604492188,27/01/2020 17:00:23=; Version=}, @...
现在,我希望能够导出相同的返回值以上内的csv,或任何可以保持这种格式,如果我把一个export-csv我要么有一个空白的空csv文件或控制台将要求我输入对象。
1条答案
按热度按时间0s0u357o1#
“Compare-Object”cmdlet返回属性“InputObject”和“SideIndicator”。我相信您要访问的属性嵌套在“InputObject”属性中。例如,您要使用
$_.InputObject.FullName
而不是$_.FullName
。或者,您可以简化脚本并执行以下操作: