[英]How to Pass a System.Data.DataSet Object as an Argument to a Powershell Workflow?
I'm getting some data from a SQL table, which I then store in a System.Data.DataSet
object.我从 SQL 表中获取一些数据,然后将其存储在
System.Data.DataSet
对象中。 I want to pass this data in this DataSet, as an Argument/Parameter, to a workflow
, such that I can display all the data in this DataSet in a foreach -parallel
style.我想将此数据集中的数据作为参数/参数传递给
workflow
,以便我可以以foreach -parallel
样式显示此数据集中的所有数据。 But I'm at a loss for the correct syntax of passing data from a System.Data.DataSet
object to a workflow
.但是我对将数据从
System.Data.DataSet
对象传递到workflow
的正确语法感到茫然。 Currently I get an Error near the line " param([System.Data.DataSet]$pServiceDataSet) " as shown below.目前我在“ param([System.Data.DataSet]$pServiceDataSet) ”行附近得到一个错误,如下所示。
Function GetSQLData
{
param ($TargetDBServer, $TargetDB, $SQLQuery)
# SQL Connection Object
$sqlConn = New-Object System.Data.SqlClient.SqlConnection
$sqlConn.ConnectionString = "Server=$TargetDBServer;Database=$TargetDB;User Id=SomeUser;Password=SomePassword;"
$sqlConn.Open()
# SQL Command
$sqlcmd = New-Object System.Data.SqlClient.SqlCommand
$sqlcmd.Connection = $sqlConn
$sqlcmd.CommandText = $SQLQuery
# SQL Adapter
$sqlAdp = New-Object System.Data.SqlClient.SqlDataAdapter ($sqlcmd)
# SQL DataSet
$ResultDataSet = New-Object System.Data.DataSet
$sqlAdp.Fill($ResultDataSet) | Out-Null
$sqlConn.Close()
return $ResultDataSet.Tables[0]
}
$CurrentComputerName = $env:COMPUTERNAME
# Export the Windows Services & it's config parameters from the "DatabaseABC..WindowsServicesConfig" Table.
$SQLQueryForService = "
SELECT [ServiceName], [StartUpParameter], [DBServerName], [DBName]
FROM [dbo].[WindowsServicesConfig] WITH (NOLOCK)
WHERE [HostServerName] = '$CurrentComputerName'
AND [ServiceName] LIKE '%MyService%' "
$ServicesDataSet = GetSQLData -TargetDBServer "ServerABC" -TargetDB "DatabaseABC" -SQLQuery $SQLQueryForService
$ServicesDataSet.GetType()
$ServicesDataSet | Format-Table
workflow DisplayAllServices
{
param([System.Data.DataSet]$pServiceDataSet) # <- I get an Error here
foreach -parallel ($Service in $pServiceDataSet)
{
$Service.ServiceName
$Service.StartUpParameter
$Service.DBServerName
$Service.DBName
}
}
DisplayAllServices -pServiceDataSet $ServicesDataSet
My final objective is to use the data in this DataSet to create Windows Services.我的最终目标是使用此 DataSet 中的数据来创建 Windows 服务。 But this is my most frustrating hurdle.
但这是我最令人沮丧的障碍。 I cannot get past the Error.
我无法克服错误。
Figured out the Solution to my Problem.找出我的问题的解决方案。 Replaced the "param([System.Data.DataSet]$pServiceDataSet)" with "param([PSObject]$pServiceDataSet)".
将“param([System.Data.DataSet]$pServiceDataSet)”替换为“param([PSObject]$pServiceDataSet)”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.