Экспорт csv, возвращающий шестнадцатеричный результат

#sql #powershell

#sql #powershell

Вопрос:

Когда я пытаюсь выполнить результат SQL-запроса к Active Directory и экспортировать его в файл CSV, я всегда получаю шестнадцатеричный результат в каждой строке вместо выбранных мной свойств.

SQL:

 $qry = New-Object System.Data.SqlClient.SqlCommand("SELECT Name, IsCompliant,LatestEntry,ComputerManufacturerName,ComputerModelName,OperatingSystemName,MachinesUsersNames FROM ComplianceCore.MachinesComplianceView", $conn)
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter $qry
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataset) | Out-Null
  

Powershell:

 get-adcomputer -filter * -properties CN, CanonicalName, IPv4Address | Where-Object { ($_.Name -notin $dataset.tables.name -and $_.CanonicalName -notlike "*Domain Contr*" -and $_.CanonicalName -notlike "*servers*" -and $_.CanonicalName -notlike "*Idle Computers*") } | Select-object  CN, CanonicalName, IPv4Address | Export-Csv -Path "C:BACWSUSScriptsMBAM ComplianceNotConfiguredResult.csv"

  

Результат:
введите описание изображения здесь

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

1.Вы должны показать нам часть результирующего файла, однако его необходимо удалить | ft , поскольку он предназначен только для отображения и может усекать отображаемые значения полей. Экспортируйте объекты в csv такими, какие они есть на самом деле,

2. @Theo обновил раздел результатов

3. Вы удалили | ft , и что вы получаете при выполнении get-adcomputer -filter * -properties CN, CanonicalName, IPv4Address | Where-Object { ($_.Name -notin $dataset.tables.name -and $_.CanonicalName -notlike "*Domain Contr*" -and $_.CanonicalName -notlike "*servers*" -and $_.CanonicalName -notlike "*Idle Computers*") } . Что находится внутри $dataset.tables.name ?

4. КСТАТИ. Я бы предложил использовать регулярное -match выражение вместо этих повторяющихся -notlike сравнений: $_.CanonicalName -notmatch "Domain Contr|servers|Idle Computers"

5. Обновил FT, я использую -notlike, поскольку хочу убедиться, что я не пропустил ни одного пробела, и $dataset.tables.name содержит имена устройств, на которых настроен bitlocker. Мой план состоит в том, чтобы получить все устройства в AD, которых нет в $dataset.tables.name список