具有嵌套功能的Azure PowerShell Runbook

我有一台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。似乎在再次调用该函数之后,整个脚本从头开始,而不仅仅是带有参数的函数。

感谢您的帮助!

关于, 标记

qqqqj 回答:具有嵌套功能的Azure PowerShell Runbook

理想情况下,它不应该从头开始!为了仔细检查,我建议您在调用getTerms函数之前和之后(即,从底部开始的第4行附近)以及实际getTerms函数之前添加写输出行。然后验证您在这些写输出行中提供的内容是否按预期顺序打印。

此外,我建议您尝试以下方法,看看问题是否得到解决。

.frame
本文链接:https://www.f2er.com/2503271.html

大家都在问