繁体   English   中英

PSObject 正在返回 system.object 而不是字符串值

[英]PSObject is returning system.object and not a string value

我正在尝试合并来自两个不同来源的数据,并通过使用 PSObject 将其导出到 CSV 或 txt 文件中。

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

$conn.Close


$resultObject = New-Object -TypeName psobject

foreach ($data in $dataset){
    $resultObject | Add-Member -MemberType NoteProperty -Name Name -Value $dataset.Tables.Name
    $resultObject | Add-Member -MemberType NoteProperty -Name ComputerManufacturer -Value $dataset.Tables.ComputerManufacturerName
    $resultObject | Add-Member -MemberType NoteProperty -Name OperatingSystemName -Value $dataset.Tables.OperatingSystemName
    $resultObject | Add-Member -MemberType NoteProperty -Name Tenant -Value (get-adcomputer -filter * -property CN | Where-Object { $_.Name -in $dataset.tables.name } | select-object CN)
}

$resultObject | Out-file -filePath "C:\BAC\WSUSScripts\MBAM Compliance\MBAMErrors.txt"

此外,我想对 AD 运行查询以检索一些租户信息,但没有成功。

结果是当我将系统导出到 csv 时。object 或类似 {Microsoft Corporation, Dell Inc., Dell Inc., Dell Inc....}桌子。

您必须创建一个数组并将每个数据/结果对象作为条目/行添加到数组中。

$SQLServer = "SQL_SERVER"
$SQLDatabase = "SQL_DATABASE"
$conn = New-Object System.Data.SqlClient.SqlConnection("Server=$SQLServer;Database=$SQLDatabase;Integrated Security=True")
$qry = New-Object System.Data.SqlClient.SqlCommand("SELECT Name, IsCompliant,LatestEntry,ComputerManufacturerName,ComputerModelName,OperatingSystemName,MachinesUsersNames,ErrorInfoName FROM ComplianceCore.MachinesComplianceView WHERE isCompliant='false'", $conn)
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter $qry
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataset) | Out-Null

$conn.Close
    
$resultArray = foreach ($data in $dataset.Tables[0]){
    $resultObject = New-Object -TypeName psobject
    $resultObject | Add-Member -MemberType NoteProperty -Name Name -Value $data.Name
    $resultObject | Add-Member -MemberType NoteProperty -Name ComputerManufacturer -Value $data.ComputerManufacturerName
    $resultObject | Add-Member -MemberType NoteProperty -Name OperatingSystemName -Value $data.OperatingSystemName
    $resultObject | Add-Member -MemberType NoteProperty -Name Tenant -Value (get-adcomputer -filter * -property CN | Where-Object { $_.Name -in $data.name } | select-object CN)

    $resultObject
}

$resultArray | ConvertTo-CSV -NoTypeInformation | Out-file -filePath "C:\BAC\WSUSScripts\MBAM Compliance\MBAMErrors.txt"

@Guenther Schmitz。 我几乎花了 2 个小时在这上面,你是救世主。 $dataset.values[0] 适用于我的场景。 你真是无名英雄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM