Powershellを使用してSSISプロジェクトをインストールし、その環境を作成しています。 Project.Params XMLファイルからプロジェクトパラメータを読み込み、環境変数&の値を作成しています。次のコードスニペットを使用してパラメータ&の値を読み込むことはできますが、2番目のforeachループの代わりにSelectSingleNodeを使用したいと思います。私のXPathのスキルはそれに依存しません。ここ は、作業コードです:子ノードのPowershell SelectSingleNode
# load the Params file into memory
[xml]$ParamsDoc = Get-Content -Path $ParamsFilePath
# for each parameter in the Params file, add an environment variable if it doesn't already exist
foreach ($Param in $ParamsDoc.Parameters.Parameter)
{
$ParamName = $Param.Name
# use the value in the Params file as the default value for the environment variable
foreach ($Prop in $Param.Properties.Property)
{
if ($Prop.Name -eq 'value')
{
$ParamValue = $Prop.InnerText
break
}
}
AddEnvironmentVariableIfMissing $ParamName $ParamValue
}
AddEnvironmentVariableIfMissingは、私が書いた別の関数です。さて、ここでは動作しないコードがあります:
# load the Params file into memory
[xml]$ParamsDoc = Get-Content $ParamsFilePath
$nsMgr = New-Object System.Xml.XmlNamespaceManager($ParamsDoc.NameTable)
$nsMgr.AddNamespace("SSIS", $ParamsDoc.DocumentElement.NamespaceURI)
foreach ($Param in $ParamsDoc.Parameters.Parameter)
{
$ParamName = $Param.Name
# NONE of these work!
$ParamValue = $Param.Properties.SelectSingleNode("SSIS:Property[@Name='Value']",$nsMgr)
$ParamValue = $Param.Properties.SelectSingleNode("Name[.='Value']",$nsMgr)
$ParamValue = $Param.Properties.SelectSingleNode("SSIS:Property/Name[.='Value']",$nsMgr)
$ParamValue = $Param.Properties.Property.SelectSingleNode("Name[.='Value']",$nsMgr)
$ParamValue = $Param.SelectSingleNode("SSIS:Properties/SSIS:Property[@Name='Value']",$nsMgr)
$ParamValue = $Param.SelectSingleNode("SSIS:Properties/SSIS:Property/Name[.='Value']",$nsMgr)
$ParamValue = $Param.SelectSingleNode("SSIS:Property[@Name='Value']",$nsMgr)
$ParamValue = $Param.SelectSingleNode("SSIS:Property/Name[.='Value']",$nsMgr)
AddEnvironmentVariableIfMissing $ParamName $ParamValue
}
名前= '値'の子ノードを取得する正しいXPath構文は何ですか?
ここでSSIS Project.paramsのサンプルが
<?xml version="1.0"?>
<SSIS:Parameters xmlns:SSIS="www.microsoft.com/SqlServer/SSIS">
<SSIS:Parameter
SSIS:Name="Client">
<SSIS:Properties>
<SSIS:Property
SSIS:Name="ID">{144b0266-9e94-4821-bb68-f020436d5df5}</SSIS:Property>
<SSIS:Property
SSIS:Name="CreationName"></SSIS:Property>
<SSIS:Property
SSIS:Name="Description"></SSIS:Property>
<SSIS:Property
SSIS:Name="IncludeInDebugDump">0</SSIS:Property>
<SSIS:Property
SSIS:Name="Required">0</SSIS:Property>
<SSIS:Property
SSIS:Name="Sensitive">0</SSIS:Property>
<SSIS:Property
SSIS:Name="Value">sampleclient</SSIS:Property>
<SSIS:Property
SSIS:Name="DataType">18</SSIS:Property>
</SSIS:Properties>
</SSIS:Parameter>
<SSIS:Parameter
SSIS:Name="MSSQLServer">
<SSIS:Properties>
<SSIS:Property
SSIS:Name="ID">{b4e6c5e1-ef85-4df3-b2dc-db37971d081d}</SSIS:Property>
<SSIS:Property
SSIS:Name="CreationName"></SSIS:Property>
<SSIS:Property
SSIS:Name="Description"></SSIS:Property>
<SSIS:Property
SSIS:Name="IncludeInDebugDump">0</SSIS:Property>
<SSIS:Property
SSIS:Name="Required">0</SSIS:Property>
<SSIS:Property
SSIS:Name="Sensitive">0</SSIS:Property>
<SSIS:Property
SSIS:Name="Value">MSSQLSERVER</SSIS:Property>
<SSIS:Property
SSIS:Name="DataType">18</SSIS:Property>
</SSIS:Properties>
</SSIS:Parameter>
</SSIS:Parameters>
入力.xmlファイルを共有できますか?親と少なくともあなたが選択したいノードのサンプル? – FoxDeploy
ファイルサンプルを追加しました –
XPathクエリで 'SSIS'を使う必要があります。 – PetSerAl