以下是我为返回表格而创建的PowerShell函数。
function GetJOINConstraints
{
[CmdletBinding()]
param(
[Parameter( Mandatory=$true)] $ConnectionString,
[Parameter( Mandatory=$true)] $tableName
)
$Conn = new-object System.Data.SqlClient.SQLConnection
$Conn.connectionString=$ConnectionString
$Conn.Open()
$Cmd = New-Object System.Data.SqlClient.SqlCommand
$Cmd.Connection = $Conn
$cmd.CommandText = "Exec TemplateTransport.usp_Get_JOINConstraints 'Action'"
#$Cmd.CommandType = [System.Data.CommandType]'StoredProcedure'
#$Cmd.Parameters.Add("@TargetTableName", $tableName)
$SQLAdapter = New-Object System.Data.Sqlclient.SqlDataAdapter
$SqlAdapter.SelectCommand = $Cmd
$rs = New-Object System.Data.DataSet
$SqlAdapter.Fill($rs)
Return $rs.Tables[0] | Format-Table
$Con
n.Close()
}
当我尝试运行此函数时,它返回如下结果
fkeyid : Action
fkeycol : ActionTypeID
fkeynull : False
rkeyid : ActionType
rkeycol : ID
nkcol : Name
alias :
nullable : False
fkOrder : 1
fkeyid : Action
fkeycol : DefaultTimeTrackingTaskID
fkeynull : True
rkeyid : TimeTrackingTask
rkeycol : ID
nkcol : Name
alias :
nullable : True
fkOrder : 1
我正在寻找像
这样的结果fkeyid fkeycol fkeynull rkeyid rkeycol nkcol alias nullable fkOrder
------ ------- -------- ------ ------- ----- ----- -------- -------
Action Actio... False Actio... ID Name False 1
Action Defau... True TimeT... ID Name True 1
Action Proce... False Process ID Proce... Proce... False 1
Action TimeT... True TimeT... ID Name True 1
我可以使用Format-Table
来实现这一点。但无法将结果集保存到Array。我希望能够将它保存到数组并进行处理。非常感谢任何帮助。
感谢。
答案 0 :(得分:5)
您应该避免将输出的文本格式化为函数的返回值。更好的用途是完全删除该行,将输出存储到变量中,然后将该变量传递给format-table。因此,从您的函数中删除|Format-Table
,然后执行以下操作:
$TableJoins = GetJOINConstraints -ConnectionString $ConString -TableName $tblName
$TableJoins | Format-Table
或者,您可以使用Tee-Object
将输出存储到变量中,并将其传递给Format-Table:
GetJOINConstraints -ConnectionString $ConString -TableName $tblName | Tee-Object -Variable TableJoins | Format-Table