powershell - 如何将 System.Data.DataSet 对象作为参数传递给 Powershell 工作流?
问题描述
我从 SQL 表中获取一些数据,然后将其存储在一个System.Data.DataSet
对象中。我想将此 DataSet 中的这些数据作为 Argument/Parameter 传递给 a workflow
,以便我可以以某种foreach -parallel
样式显示此 DataSet 中的所有数据。但是我不知道将数据从System.Data.DataSet
对象传递到workflow
. 目前我在“ 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
我的最终目标是使用此 DataSet 中的数据来创建 Windows 服务。但这是我最沮丧的障碍。我无法克服错误。
解决方案
想出了我的问题的解决方案。将“param([System.Data.DataSet]$pServiceDataSet)”替换为“param([PSObject]$pServiceDataSet)”。
推荐阅读
- django - 使用 IF 条件时如何在 django 的单个查询中进行数据库更新?
- javascript - 需要 javascript 来验证服务器是否已启动并在未启动时防止页面丢失
- ios - 使用 CloudKit 处理用户帐户的正确方法
- firebase - Firestore 界面默认折叠字段 (console.firebase.google)
- pandas - 将熊猫数据框转换为列表并嵌套一个字典?
- python - 递归函数返回包含所有其他间隔的最小间隔
- javascript - 如何通过值或 xpath 选择索引选项
- javascript - 有没有办法在自动化testcafe测试用例时将js命令传递给开发控制台
- javascript - 如何用 PHP echo 做 JS 函数?
- reactjs - 如何在 React Bootstrap 和 Gatsby 中使用 Card.Img 渲染图像?