#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