私はPowershell v4.0です。私は自分のUIのドロップダウンを持っているので、自分のデータベースのデータで満たしています。Powershell単一行のデータリターンのコンボボックスへの復帰
function GetDynamicContracts{
$ContractQuery = "select con.ContractNumber as Name, c.ContractID from foo..campaign c inner join foo..campaigntemplate ct on c.campaignid = ct.campaignid
inner join foo..template t on ct.templateid = t.templateid inner join bar..contracts con on con.ContractID = c.ContractID
where c.ProductType = 'INTRO' and t.FileName = 'Intro Dynamic Template' and c.DeleteFlag = 0"
$ContractResult = ExecuteSelect "Bar" $ContractQuery
return , $ContractResult
}
このコードは正常に動作します:それはこのようになりますバックエンドで
$ConfigDynamicContractID.ItemsSource = (GetDynamicContracts).DefaultView
:私はそうのようなデータをつかむ関数を呼び出します。私はその後、上記のテーブルはお互いに話すことができないので、それぞれを個別に呼び出してpowershellでフィルタリングする必要があると言われました。だからここに私のコードです:
function GetDynamicContracts{
$CampaignQuery = "Select c.* From foo..Campaign c join foo..CampaignTemplate ct on c.CampaignID = ct.CampaignID
join foo..Template t on ct.TemplateID = t.TemplateID
Where c.ProductType = 'INTRO' and t.FileName = 'Intro Dynamic Template' and c.DeleteFlag = 0"
$CampaignResults = ExecuteSelect "foo" $CampaignQuery
$ContractIDs = New-Object System.Collections.ArrayList
foreach($row in $CampaignResults.Rows){
$ContractIDs.Add($row.ContractID)
}
$ContractIDs = $ContractIDs -join ","
$PHQuery = "Select ContractID, ContractNumber as Name From Contracts Where ContractID in ($ContractIDs)"
$PHResults = ExecuteSelect "Bar" $PHQuery
#Log $MyInvocation.MyCommand $PSBoundParameters
return ,$PHResults
}
このコードは、単一の行を返すときには機能しません。しかし、私はこの関数呼び出しを2つに分けると、それは機能します。以下を参照してください:
1つの関数内で2つの実行選択を行うと、 '、'はデータを返すときに実行する処理に失敗するようです。誰も理由を説明できますか?私は回避策があるので、早めにお時間をいただきありがとうございます。
ArrayList.addはアイテムインデックスが追加された出力をスパムし、AFAIKは '> $ null'または' | $ null 'の 'return'文に関係なく常に抑制されるべきです。アウトナル。ただ言って。 – wOxxOm
PowerShell関数は、リダイレクトされないパイプラインにすべてを出力します。 'Return'キーワードの使用は余計で余計です。だから私が 'ArrayList'の' Add'メソッドを検索すると([ここ](https://msdn.microsoft.com/en-us/library/system.collections.arraylist.add%28v=vs.110%29) .aspx?f = 255&MSPPError = -2147217396))は、メソッドが追加された項目のインデックスを出力することを示します。それがリダイレクトされない限り、あなたが望むかもしれない何かに加えて、 'Int'出力をパイプラインに渡します。 – TheMadTechnician
ありがとうございました。これはPowershellのむしろ面倒な側面です。別のスレッドで、$ null = @ {'do code'}の関数でコードをラップし、最後にreturn(return $ a)を実行すると$ aだけが返されることがわかりました。それは醜いですが、パワーシェルを使った厄介なパンキーは保証されていないようです。 – SuperVillainPresident