将 SQL 值提取到 powershell 变量中?
Extracting SQL values into powershell variables?
我目前有以下脚本:
$SQLServer = "sqldev1"
$SQLDBName = "SPDEV_Printing"
$SqlQuery = "select * from PcBeheerPrinter WHERE PRT_name = 'bwpsc006'"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
clear
$DataSet.Tables[0]
其中 returns 一些控制台输出如下:
PRT_PrintServerName : pcounter
PRT_Name : bwpsc006
PRT_PortNameFull : PCOUNT_bwpsc006
PRT_CAL_SerialNumber :
PRT_ACTIVE : 1
PRT_CAL_RespondToPing : 1
PRT_CAL_NamePinged : bwpsc006
PRT_CAL_FirstSeendate : 8/02/2017 20:55:13
PRT_CAL_LastSeendate : 4/12/2017 11:36:19
PRT_CAL_SNMPPossible : 1
PRT_CAL_Brand :
PRT_ShareName : bwpsc006
PRT_Comment :
PRT_Datatype : RAW
PRT_DriverName : Canon iR-ADV C5045/5051 PCL6
PRT_Location :
PRT_PrintProcessor :
PRT_Published : 0
PRT_Shared : 0
PRT_NumberOfMissedPings : 0
PRT_LastResponsedate : 4/12/2017 11:36:19
PRT_RenderingMode : CSR
我的问题是:如何将其中一些值转换为 PS 变量?
我需要名称、序列号和其他一些(这些将作为示例)最终将它们传输到 SharePoint 列表。
我还是个初学者,无法通过谷歌搜索弄明白。
谢谢!
如果数据类型是对象,那么可以直接使用select-object,如:
$DataSet.Tables[0] | Select-object PRT_Name,PRT_CAL_SerialNumber
当使用 System.Data.SqlClient.SqlCommand
class 时,大部分返回的对象都是 datatable
类型。由于 $DataSet
将是数据表类型,您可以像这样直接使用所有返回的属性 -
$Name = $DataSet.Tables[0].PRT_Name;
$SerialNo = $DataSet.Tables[0].PRT_CAL_SerialNumber
等等。
然后您可以使用变量 $Name
和 $Serialno
作为 SharePoint 列表的输入。
我目前有以下脚本:
$SQLServer = "sqldev1"
$SQLDBName = "SPDEV_Printing"
$SqlQuery = "select * from PcBeheerPrinter WHERE PRT_name = 'bwpsc006'"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
clear
$DataSet.Tables[0]
其中 returns 一些控制台输出如下:
PRT_PrintServerName : pcounter
PRT_Name : bwpsc006
PRT_PortNameFull : PCOUNT_bwpsc006
PRT_CAL_SerialNumber :
PRT_ACTIVE : 1
PRT_CAL_RespondToPing : 1
PRT_CAL_NamePinged : bwpsc006
PRT_CAL_FirstSeendate : 8/02/2017 20:55:13
PRT_CAL_LastSeendate : 4/12/2017 11:36:19
PRT_CAL_SNMPPossible : 1
PRT_CAL_Brand :
PRT_ShareName : bwpsc006
PRT_Comment :
PRT_Datatype : RAW
PRT_DriverName : Canon iR-ADV C5045/5051 PCL6
PRT_Location :
PRT_PrintProcessor :
PRT_Published : 0
PRT_Shared : 0
PRT_NumberOfMissedPings : 0
PRT_LastResponsedate : 4/12/2017 11:36:19
PRT_RenderingMode : CSR
我的问题是:如何将其中一些值转换为 PS 变量? 我需要名称、序列号和其他一些(这些将作为示例)最终将它们传输到 SharePoint 列表。 我还是个初学者,无法通过谷歌搜索弄明白。
谢谢!
如果数据类型是对象,那么可以直接使用select-object,如:
$DataSet.Tables[0] | Select-object PRT_Name,PRT_CAL_SerialNumber
当使用 System.Data.SqlClient.SqlCommand
class 时,大部分返回的对象都是 datatable
类型。由于 $DataSet
将是数据表类型,您可以像这样直接使用所有返回的属性 -
$Name = $DataSet.Tables[0].PRT_Name;
$SerialNo = $DataSet.Tables[0].PRT_CAL_SerialNumber
等等。
然后您可以使用变量 $Name
和 $Serialno
作为 SharePoint 列表的输入。