Я нашел это https://itpro.outsidesys.com/2017/10/21/powershell-change-values-in-csv-data/
Я хотел бы использовать его для создания CSV
, который обновляется и не имеет одну и ту же запись дважды.Get-BitlockerVolume
не имеет уникальных данных строк, поэтому есть способ, с помощью которого я могу использовать 2 заголовка / данные строки, чтобы сказать, что это ROW1, это ROW2 и т. Д.
Как и использование даты из заголовка ComputerName
и Mountpoint
(Computername может приходить несколько раз из-за того, что на некоторых ПК имеется более одного раздела, MountPoint - буква диска, и я хотел бы использовать эти 2 информации для идентификации строки. Возможно ли это?
#Get all AD Computers ATNB*
$cn = Get-ADComputer -Filter * | Where-Object {$_.Name -like "ATNB*"} | Select -Property Name
foreach ($pc in $cn.name){
#Test connection
$connection = test-connection -buffersize 32 -count 1 -ComputerName $pc -quiet
if ($connection -eq $True) {
#Run command on pc esport to csv add new row
invoke-command -computername $cn.name -scriptblock {get-bitlockervolume} | export-csv -Append "C:\_test\New folder\bitlockercheck.csv"
echo "$pc Info added to CSV"
}
else {echo "$pc is not online"}
}
это новый / обновленный скрипт:
$csv = @(Import-Csv "C:\_test\New folder\bvt_2.csv")
#Get all AD Computers ATNB* and start looping
Get-ADComputer -Filter { Name -like "ATNB*" } | ForEach-Object {
# Assign the "Name" value of the current computer to $pc
$pc = $_.Name
# Test connection
if (Test-Connection -buffersize 32 -count 1 -ComputerName $pc -quiet) {
#Run command on pc esport to csv add new row
Invoke-Command -Computername $pc -scriptblock { Get-BitlockerVolume } | ForEach-Object {
# For each bit locker volume...
$volume = $_
# ... see if a row exists for the volume
$csvRow = $csv | Where-Object { $_.ComputerName -eq $pc -and $_.MountPoint -eq $volume.MountPoint }
# if a row exists, update the Data column only
if ($csvRow) {
$csvRow.Data = $volume.Data
echo "$pc Info updated in CSV"
} else {
# Otherwise add a new row to the CSV
$csv += [PSCustomObject]@{
ComputerName = $pc
MountPoint = $volume.MountPoint
Data = $volume.Data
}
echo "$pc Info added to CSV"
}
}
} else {
echo "$pc is not online"
}
}
# Export the updated CSV file
$csv | Export-Csv "C:\_test\New folder\bvt_2.csv" -NoTypeInformation