【发布时间】:2018-03-28 22:18:01
【问题描述】:
我正在查询 sql 以从 SharePoint Nintex 数据库中收集一些 nintex 信息。 Nintex 仅持有 SharePoint siteid。所以我需要powershell从sql输出的结果中获取url(和一些额外的数据) 我可以使用:
$GUIDS = ($DS.Tables[0] | select -ExpandProperty siteid) | Format-Table -HideTableHeaders | Out-String
foreach($line in $guids)
{Get-Spsite -identity $line | Select -property ID, URL, OWner, Hostname | Export-Csv -Path c:\temp\url.csv -NoTypeInformation }
但我还需要 csv 输出来包含数组 $workflowdetails 中的工作流启动器、工作流名称和活动名称。
如何将输出合二为一并导出到 csv 这是我目前所拥有的:
[CmdletBinding()]
param
(
[Parameter(Mandatory=$True)]
[string]$SQLServerInstance,
[Parameter(Mandatory=$True)]
[string]$NintexConfigDBName
)
Add-PSSnapin Microsoft.SharePoint.PowerShell
$ConnectionTimeout = 30
$Query = "SELECT DISTINCT i.workflowname,i.siteid,i.workflowinitiator, a.activityname FROM dbo.workflowinstance
i inner join WorkflowProgress P on I.InstanceID=P.InstanceID inner join Activities A on P.ActivityID=A.ActivityID WHERE a.activityname IN ('Call web service','Execute SQL','Query LDAP','Query XML', 'Start workflow in Nintex Workflow Cloud ', 'Update XML ', 'Web request ', 'Capture document set version ', 'Copy to file share', 'Create list', 'Declare as record ', 'Delete drafts', 'Delete item ', 'Delete multiple items', 'Delete previous versions', 'Discard check out ','Query list','Send document set to repository', 'Send document to repository','Set approval status ','Set item permissions', 'Undeclare as record ', 'Update multiple items', 'Action set', 'Commit pending changes', 'Run parallel actions', 'State machine ', 'Pause for... ', 'Pause until... ', 'Wait for check out status change ', 'Wait for item update ', 'Create site ','Create site collection','Decommission site collection ', 'Delete site', 'Publish Workflow', 'Assign Flexi task', 'Complete workflow task ' ) "
$QueryTimeout = 120
$conn=new-object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};database={1};Integrated Security=True;Connect Timeout={2}" -f $SQLServerInstance,$NintexConfigDBName,$ConnectionTimeout
$conn.ConnectionString=$ConnectionString
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
$da.fill($ds)
$conn.Close()
$DS.Tables[0]
$workflowdetails = ($DS.Tables[0] | select -ExpandProperty siteid, workflowinitiator, workflowname,activityname ) | Format-Table -HideTableHeaders | Out-String
$GUIDS = ($DS.Tables[0] | select -ExpandProperty siteid) | Format-Table -HideTableHeaders | Out-String
foreach($line in $guids)
{Get-Spsite -identity $line | Select -property ID, URL, OWner, Hostname | Export-Csv -Path c:\temp\url.csv -NoTypeInformation }
【问题讨论】:
-
您可以使用
-append和-Force参数将$workflowdetails附加到url.csv。像这样的东西——$workflowdetails | export-csv -Path c:\temp\url.csv -NoTypeInformation -Append -Force
标签: sql-server powershell csv