0
調用遞歸函數(RecursiveWebs()
)$webinfo.Count
是1遞歸函數的執行過程中之前,Count
增加,但只要遞歸函數完成,控制返回到主功能,$webinfo.Count
webinfo`功能每次運行時:再次降低到1遞歸函數 - 數組值消失
function RecursiveWebs($web) {
$Properties = @{
Title = $web.Title
URL = $web.Url
}
$webinfo += New-Object PSObject -Property $properties
foreach ($w in $web.Webs) {
if ($w.Webs.Count -gt 0) {
RecursiveWebs $w
}
}
}
$global:webinfo = @()
$sites = Get-SPOSite -Limit All
foreach ($site in $sites) {
Write-Host $site.Url
try {
$Properties = @{
Title = $site.Title
URL = $site.Url
NoOfSubsites = $site.Webs.Count
}
$webinfo += New-Object PSObject -Property $properties
if ($site.Webs.Count -gt 0) {
RecursiveWebs $site
}
} catch {
Write-Host $_ -ForegroundColor Red
}
}
你「復位」'$全球?你究竟想要完成什麼? –
您的'RecursiveWebs'函數中的'$ webinfo'與腳本的頂級範圍中的'$ global:webinfo'不是同一個變量。你需要在你的函數中使用'$ global:webinfo',以使這些變化在函數之外可見。更好的是,完全避免範圍問題,例如將數組作爲參數傳遞並通過該引用添加到範圍問題。 – BACON
@ MathiasR.Jessen我沒有重置$ webinfo。我的理解是,如果變量作用域是全局變量,它應該在主遞歸函數和內部遞歸函數中是相同的變量 – Farhan