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