Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Powershell中将sql集合转换为字符串_Powershell - Fatal编程技术网

在Powershell中将sql集合转换为字符串

在Powershell中将sql集合转换为字符串,powershell,Powershell,我一直在尝试从sql查询中提取数据,并将其转换为HTML,最终将结果嵌入电子邮件正文中 我的代码如下 $SQLCommand = New-Object System.Data.SqlClient.SqlCommand $SQLCommand.CommandText = "SELECT DISTINCT SYS.Name,LDISK.DeviceID0,LDISK.Size0 AS DiskSizeMB,LDISK.FreeSpace0 AS FreeSpaceMB,SCCM.dbo.v_GS_

我一直在尝试从sql查询中提取数据,并将其转换为HTML,最终将结果嵌入电子邮件正文中

我的代码如下

$SQLCommand = New-Object System.Data.SqlClient.SqlCommand 
$SQLCommand.CommandText = "SELECT DISTINCT SYS.Name,LDISK.DeviceID0,LDISK.Size0 AS DiskSizeMB,LDISK.FreeSpace0 AS FreeSpaceMB,SCCM.dbo.v_GS_WORKSTATION_STATUS.LastHWScan,SCCM.dbo.v_GS_LastSoftwareScan.LastScanDate
    FROM v_FullCollectionMembership_Valid SYS
      JOIN v_GS_LOGICAL_DISK LDISK ON SYS.ResourceID = LDISK.ResourceID
      INNER JOIN SCCM.dbo.v_GS_WORKSTATION_STATUS
        ON LDISK.ResourceID = SCCM.dbo.v_GS_WORKSTATION_STATUS.ResourceID
      INNER JOIN SCCM.dbo.v_GS_LastSoftwareScan
        ON SCCM.dbo.v_GS_LastSoftwareScan.ResourceID =
        SCCM.dbo.v_GS_WORKSTATION_STATUS.ResourceID
    WHERE
      LDISK.DeviceID0 = 'C:' AND
      LDISK.DriveType0 = 3 AND
      ((LDISK.FreeSpace0 <= ((LDISK.Size0 * 10) / 100)) OR
        (LDISK.FreeSpace0 <= 1024)) AND
      SYS.CollectionID = 'SMS00001'
    ORDER BY
      SYS.Name"
    $SQLCommand.Connection = $SQLConnection 

    $SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
    $SqlAdapter.SelectCommand = $SQLCommand                  
    $SQLDataset = New-Object System.Data.DataSet 
    $SqlAdapter.fill($SQLDataset) | out-null 

    $FileInfo = $SQLDataset.tables | FT -AutoSize
…因此我怀疑ConvertTo HTML模块正在寻找字符串格式的输入,但我似乎无法使其正常工作-即使在尝试了$FileInfo | Out string-Stream等选项之后


我想相信这是很容易做到的——我就是找不到正确的方法。提前谢谢

删除格式表,在第一个表中使用“选择并排除不必要”选项,请尝试此操作

$SQLDataset.tables[0] |
    select * -ExcludeProperty RowError, RowState, HasErrors, Name, Table, ItemArray | 
        ConvertTo-Html 

通常,PowerShell cmdlet希望数据对象作为输入而不是字符串,ConvertTo Html也不例外。格式化cmdlet(如Format Table ft)应仅用于即时显示-此类cmdlet的输出对于进一步处理数据没有用处,因此,将格式表输出指定给要传递到转换为Html的变量将不会产生有意义的结果。感谢mklement0-我必须记住关于格式表的这一点,这是完美的-感谢Espernto57!现在,它显示完全一样,我已经尝试了几天!
$FileInfo.GetType();

IsPublic IsSerial Name                                     BaseType                                                                                                                                                               
-------- -------- ----                                     --------                                                                                                                                                               
True     True     Object[]                                 System.Array  
$SQLDataset.tables[0] |
    select * -ExcludeProperty RowError, RowState, HasErrors, Name, Table, ItemArray | 
        ConvertTo-Html