将SQL值提取到powershell变量中?

时间:2018-04-04 11:21:18

标签: sql powershell variables sharepoint-2013

我目前有以下脚本:

$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]

返回一些控制台输出,如下所示:

    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变量? 我需要Name,SerialNumber和其他一些(这些将作为示例)最终将它们传输到SharePoint列表。 我还是初学者,无法通过谷歌搜索来解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:2)

使用System.Data.SqlClient.SqlCommand类时,返回的大多数对象都是datatable类型。由于$DataSet的类型为datatable,因此您可以直接使用所有返回的属性 -

$Name = $DataSet.Tables[0].PRT_Name; $SerialNo = $DataSet.Tables[0].PRT_CAL_SerialNumber等等。

然后,您可以使用变量$Name$Serialno作为SharePoint列表的输入。

答案 1 :(得分:1)

如果数据类型是object,那么您可以直接使用 select-object ,如:

$DataSet.Tables[0] | Select-object  PRT_Name,PRT_CAL_SerialNumber