我有一台Azure PowerShell Runbook,其中使用了SharePoint-PnP Cmdlet,它的工作原理完全正常。但是我对函数调用有疑问。值得一提的是,该脚本在本地运行良好,但在Azure Runbook中却无法运行。
$SPCredentials = Get-AutomationPSCredential -Name 'ServiceAccount'
Connect-PnPOnline -Url $SPUrl -Credentials $SPCredentials
$SPList = New-PnPList -Title "$($ObjektNr)-$($ObjektName)" -Template DocumentLibrary -OnQuickLaunch -EnableContentTypes
Write-Output "Bibliothek erstellt"
Add-PnPContentTypeToList -List $SPList -ContentType $SPCTName -DefaultContentType
Write-Output "Inhaltstyp hinzugefügt"
Remove-PnPContentTypeFromList -List $SPList -ContentType "Dokument"
Write-Output "Inhaltstyp entfernt"
Set-PnPList -Identity $SPList -EnableContentTypes $false -EnableVersioning $true -EnableMinorVersions $false
Write-Output "Listeneinstellungen vorgenommen"
$SPList = Get-PnPList -Identity "$($ObjektNr)-$($ObjektName)"
$SPRootFolder = "$($SPList.RootFolder.Name)/"
Write-Output "Neue Bibliothek abgerufen"
$SPTerms = Get-PnPTerm -TermSet $SPTermSet -TermGroup $SPTermGroup -IncludeChildTerms -Recursive
Write-Output "Terms abgerufen"
Function getTerms($Terms)
{
Write-Output "Funktion ausgeführt"
Foreach ($Term in $Terms)
{
If ($Term.PathOfTerm.Contains(";"))
{
Add-PnPFolder -Name $Term.Name -Folder "$($SPRootFolder)$($Term.PathOfTerm.Substring(0, $Term.PathOfTerm.LastIndexOf(";")).Replace(";","/"))"
$values = @()
$splitTerms = $Term.PathOfTerm.Split(";")
$count = $splitTerms.Count - 1
For ($i=0; $i -le $count; $i++)
{
If ($i -eq 0)
{
$values += "$($SPTermGroup)|$($SPTermSet)|$($splitTerms[$i])"
}
Else
{
$values += "$($values[-1])|$($splitTerms[$i])"
}
}
Set-PnPDefaultColumnValues -List $SPList -Field "Metadaten" -Value $values -Folder "$($Term.PathOfTerm.Replace(";","/"))"
}
else
{
Add-PnPFolder -Name $Term.Name -Folder $SPRootFolder
Set-PnPDefaultColumnValues -List $SPList -Field "Metadaten" -Value $Term.Id -Folder $Term.Name
}
If ($Term.Terms.Count -gt 0)
{
getTerms($Term.Terms)
}
}
}
getTerms($SPTerms)
现在的问题是我在函数getTerms(底部的第四行)中调用函数getTerms。似乎在再次调用该函数之后,整个脚本从头开始,而不仅仅是带有参数的函数。
感谢您的帮助!
关于, 标记
答案 0 :(得分:0)
理想情况下,它不应该从头开始!为了仔细检查,我建议您在调用getTerms函数之前和之后(即,从底部开始的第4行附近)以及实际getTerms函数之前添加写输出行。然后验证您在这些写输出行中提供的内容是否按预期顺序打印。
此外,我建议您尝试以下方法,看看问题是否得到解决。
.frame