У меня возникла проблема с экспортом строки в файл CSV. Мой сценарий удаленно получает настройки BIOS с ноутбука Lenovo с помощью запросов WMI и PowerShell. И я экспортирую результат в файл CSV. Все настройки экспортируются великолепно, но «AvailableSettings» (параметры настройки BIOS), похоже, сталкиваются с проблемой несоответствия типов.
Выходной файл выглядит так:
CurrentSetting,"Status","AvailableSettings"
WakeOnLAN,"ACOnly","System.String[]"
EthernetLANOptionROM,"Enable","System.String[]"
Код:
$Computers = Get-Content -Path C:\temp\ComputerList.txt
foreach ($Computer in $Computers) {
$Computer = $Computer -replace "`t|`n|`r",""
$Get_manufacturer = (Get-WmiObject -ComputerName $Computer Win32_Computersystem).Manufacturer
if ($Get_manufacturer -like "*lenovo*") {
$manufacturer = "Lenovo"
$selections = Get-WmiObject -ComputerName $Computer -Class Lenovo_GetBiosSelections -Namespace root\wmi
$resultsLenovo = Get-WmiObject -ComputerName $Computer -Class Lenovo_BiosSetting -Namespace root\wmi | Where-Object CurrentSetting | ForEach-Object {
$parts = $_.CurrentSetting.Split(',')
[PSCustomObject]@{
CurrentSetting = $parts[0]
Status = $parts[1]
AvailableSettings = $selections.GetBiosSelections($parts[0]).Selections.Split(',')
}
}
$resultsLenovo | Export-Csv -Path "C:\temp\$Computer-BIOS-settings.csv" -NoTypeInformation -Delimiter ',' -Encoding ASCII
}
Clear-Variable -Name manufacturer
}
Также есть другие IF для других производителей, но я не включил их в этот фрагмент кода здесь.
При выводе результата в Out-GridView, похоже, он работает просто отлично.
Результат должен быть таким:
CurrentSetting,"Status","AvailableSettings"
WakeOnLAN,"ACOnly","Disable, ACOnly, ACandBattery, Enable"
EthernetLANOptionROM,"Enable","Disable, Enable"
Любые идеи, где я напутал и как отсортировать типы?