PowerShell函数返回List视图中的表

时间:2014-10-02 21:06:27

标签: powershell

以下是我为返回表格而创建的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。我希望能够将它保存到数组并进行处理。非常感谢任何帮助。

感谢。

1 个答案:

答案 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