我正在尝试从azuread导出Groupmembers列表,我的整个脚本运行得相当好,但我需要在最终文件中的每个新行都有它要导入的文件的名称(以及它导入的内容) )
我用来执行此操作的脚本部分如下
(在此处找到此代码
get-childItem "C:\Users\user\Documents\Azure\Intune\management\*.csv" | foreach {
$filePath = $_
$lines = $lines = Get-Content $filePath | Select -Skip 1
$linesToWrite = switch($getFirstLine) {
$true {$lines}
$false {$lines | Select -Skip 1}
}
$getFirstLine = $false
Add-Content "C:\Users\user\Documents\Azure\Intune\management\master_list.csv" $linesToWrite
}
答案 0 :(得分:0)
我可能会这样做:
$files = Get-ChildItem -Path "C:\Users\user\Documents\Azure\Intune\management\*.csv"
ForEach ($file in $files) {
Import-Csv -Path $File.FullName |
Select-Object -Property *, @{n='FileName';e={$file.Name}} |
Export-Csv -Path "C:\Users\user\Documents\Azure\Intune\management\master_list.csv" -NoTypeInformation -Append
}
请注意,您需要v3或更高版本的PowerShell才能获得-Append
的{{1}}标记。
答案 1 :(得分:0)
另一种方法。如果文件很大,这种方式可能会占用大量内存,但我喜欢这种方法,它很适合我大脑的工作方式。
$result = New-Object System.Collections.ArrayList
foreach($file in Get-ChildItem 'C:\Users\User\Documents\Azure\InTune\Management\*.csv'){
$result.AddRange((Import-CSV $file | Add-Member -InputObject $_ -Name 'File' -MemberType NoteProperty -Value $file.Name))
}
$result | Export-CSV 'C:\Users\user\Documents\Azure\Intune\management\master_list.csv' -NoTypeInformation
我认为这与版本无关,但我总是忘记在哪个版本中发生了哪些功能。实际上我认为Add-Member会把它放在v3 +。