Запуск нескольких функций в скрипте PS и экспорт всех в 1 CSV

#powershell

Вопрос:

Я пытаюсь написать что-то простое для аудита конфигурации рабочей станции, в том случае, если мне понадобится заменить клиентский компьютер или изменить его изображение. Чтобы записать, что все было настроено на нем раньше. Сценарий, который я написал до сих пор, таков

 $Output="C:CompConfig.csv" $Printers=Get-Printer | Select-Object Name,Type,PortName,Shared $Drives=Get-PSDrive | where{$_.DisplayRoot -match "\"} $Accounts=Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser $Software=Get-ItemProperty HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersion Uninstall* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate  $CompConfig=???????  $CompConfig | Export-Csv -Path $Output   

Однако я не могу понять, как должна выглядеть функция $CompConfig.

Комментарии:

1. Извините, первый раз здесь. Моя идея состояла бы в том, чтобы отформатировать CSV таким образом, чтобы казалось, что вы экспортировали каждую из этих функций по отдельности, а затем скопировали и вставили их в один CSV. Первоначально я написал это, используя Out-Файл и добавляя каждую функцию в Out-файл, но он записал всю строку в одну ячейку, а не несколько. И это было действительно трудно прочесть.

2. Я также не возражал бы, если бы он экспортировал все это в XML или HTML, я в основном просто хочу файл со всеми данными в нем, который не является кошмаром для чтения.

3. кто-то удалил мой комментарий с просьбой добавить пример того, как вы хотите, чтобы данные были структурированы в выходном файле. [ вздыхает … ] ///// итак, вы пробовали экспортировать каждую коллекцию в CSV, а затем вставлять каждый из этих CSV-файлов в обычный текстовый файл? или в HTML-файл, используя ConvertTo-Html amp; его различные параметры?

4. Я попытался настроить их все в отдельный csv-файл, но мне не удалось собрать 4 отдельных файла обратно в один файл. Вот где мой мозг застревает. Я все еще новичок в PS и весь день гуглил в Интернете.

5. запустите это $Printers | ConvertTo-Html | Set-Content -LiteralPath "$env:TEMPPrinterInfo.html" , а затем загрузите полученный файл в браузер. это кажется вполне читаемым. ///// если все, что вам нужно, — это необработанный текст всех CSV-файлов, экспортируйте каждый $Var в CSV, а затем просто вставьте каждый в текстовый файл с несколькими строками между каждым блоком информации.

Ответ №1:

Я также не возражал бы, если бы он экспортировал все это в XML или HTML, я в основном просто хочу файл со всеми данными в нем, который не является кошмаром для чтения.

Поскольку формат не так уж важен, пока он читаем, вот предлагаемое решение с использованием JSON:

 $Output="C:CompConfig.json" $Printers=Get-Printer | Select-Object Name,Type,PortName,Shared $Drives=Get-PSDrive | where{$_.DisplayRoot -match "\"} $Accounts=Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser $Software=Get-ItemProperty HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate  $CompConfig = [PSCustomObject]@{  Printers = $Printers  Drives = $Drives  Accounts = $Accounts  Software = $Software }  $CompConfig |  ConvertTo-Json |  Out-File $Output