在“ {}”中具有String / ArrayValue的PowerShell New Pipline变量

时间:2019-03-18 14:22:30

标签: arrays powershell variables

我需要一种解决方案来以某种格式创建数组。

背景我导出SharePoint列表并从XML文件获取字段。

(通过PnP)导出的命令如下:

$AllSPListItems = Get-PnPListItem $SharePointListName

$ItemsSelection = @{ L = "ID"; E = { $_["ID"] } },@{ L = "SP_SiteURL"; E = { $_["SP_SiteURL"] } }

$AllSPListItems | Select $ItemsSelection | Export-Csv -Path "C:\Temp\XYZ.csv"

那行得通,但这就是我想要的:

$ItemsSelection = @{ L = "$FieldDisplayName[0]"; E = { $_[$FieldURLName[0]] } },@{ L = "$FieldDisplayName[1]"; E = { $_[$FieldURLName[1]] } } }

我从XML中获得了$FieldDisplayName$FieldURLName变量。

不幸的是,我只得到以下输出:

@{ L = "ID"; E = { $_[$FieldURLName[0]] } },@{ L = "SP_SiteURL"; E = { $_[$FieldURLName[1]] } } }

Name                           Value                                                                                                                                                     
----                           -----                                                                                                                                                     
E                              $FieldURLName[0]                                                                                                                 
L                              ID
E                              $FieldURLName[1]                                                                                                                 
L                              SP_SiteURL

那么我如何获得“ E”的值,而不是文本? 变量无法解析。

非常感谢!

2 个答案:

答案 0 :(得分:0)

  

那么我如何获得“ E”的值,而不是文本?

您获得E脚本块的文本是因为它尚未执行-只有在与Select-Object一起使用时,这种情况才会发生。

要获取正确的标签名称,请删除标签表达式周围的"引号:

$ItemsSelection = @{ L = $FieldDisplayName[0]; E = { $_[$FieldURLName[0]] } },@{ L = $FieldDisplayName[1]; E = { $_[$FieldURLName[1]] } } }
$AllSPListItems | Select $ItemsSelection | Export-Csv -Path "C:\Temp\XYZ.csv"

答案 1 :(得分:0)

好的,我有解决方案,虽然没有吸引力,但是显然没有其他可能性。 我用的开关盒:

开关($ FieldDisplayName.Length){

1 {$items | Select @{ L = $FieldDisplayName[0]; E = { $_[$FieldURLName[0]] } } | Export-Csv -Path "C:\install\ExportV1.csv"} 
2 {$items | Select @{ L = $FieldDisplayName[0]; E = { $_[$FieldURLName[0]] } },@{ L = $FieldDisplayName[1]; E = { $_[$FieldURLName[1]] } } | Export-Csv -Path "C:\install\ExportV1.csv"} 

}