我使用了许多字段来构建字符串,以便从SharePoint 2013列表中提取值。
我用它来构建字符串。
foreach($Column in $StringColumns){
$Fields=$Fields+"`""+$Column+"`""
if($Loop -ne $ColumnCount){
$Fields=$Fields+","
$Loop++}
}
我使用构建的$Fields
[string]变量并将其传递给此命令。
$SPList.getitems($queryfromsource)[$ItemNumber][$Fields]
结果是我没有收到命令的输出。令我感到奇怪的是,我可以确认$Fields
在该命令中有适当的字符串。我通过在控制台中调用它然后直接将输出复制到SharePoint命令来完成此操作。当我这样做时,我收到了我正在寻找的输出。
这似乎应该非常简单,但它让我疯了。
答案 0 :(得分:0)
会是这样的吗?
foreach ($Column in $StringColumns)
{
$Fields+= "`"$($Column)`""
if ($Loop -ne $ColumnCount)
{
$Fields+= ","
$Loop++
# Only use Write-Host for debugging
Write-Host "Column $Loop of $ColumnCount"
}
}
你是否在某处初始化$ Loop,可能会尝试打印你所在的循环数?
答案 1 :(得分:0)
您可能应该了解一下PowerShell中的字符串构建技术。你所拥有的那种复杂的构造不仅需要创建太多的工作,而且调试起来也很困难,因为你的例子证明是完美的。你需要将$Loop
初始化为1而不是0(我假设你正在做的事情,请总是发布完整的代码),或者将$Loop++
放在循环的开头,否则字符串有最后一个逗号。您还需要将$Fields
变量初始化为空字符串。
您是否通过打印实际变量来检查脚本的字符串输出?如果在控制台中检查它,您可能已经初始化了一些您忘记在脚本中执行的变量。
构建字符串的更简单方法:
$columns = 'Title', 'Created', 'Description'
$string = "`"$($columns -join '","')`""