Powershell does not resolve dynamic variables
I have been working diligently on a script to create Sharepoint groups in Powershell. It sounds easy enough until you have to create iterated allocations. For example, a group needs to be allocated permissions to multiple lists. This is where the fun starts:
My code was as follows:
For($i=0; $i -lt $scopes.Length; $i++) {
if (($scopes[$i] -ne $null) -and ($scopes[$i] -ne ""))
{
$list = $web.Lists["$scopes[$i]"]
if ($list.HasUniqueRoleAssignments -eq $false)
{
$list.BreakRoleInheritance($true)
$list.Update()
}
$list.RoleAssignments.Add($assignment)
$list.Update()
}
It compiles and runs, but I was getting a lot of error messages about unassigned variables in the RoleAssignment addition. Very frustrating.
The problem was traced to $list = $web.Lists["$scopes[$i]"]
Powershell will not resolve the 'inner" variable, which cause the lookup to return a null value.
The solution was simple. Put the value in a variable and use the variable.
$name = $scopes[$i]
$list = $web.Lists["$name"]
I wish I had thought of that 2 hours ago.
My code was as follows:
For($i=0; $i -lt $scopes.Length; $i++) {
if (($scopes[$i] -ne $null) -and ($scopes[$i] -ne ""))
{
$list = $web.Lists["$scopes[$i]"]
if ($list.HasUniqueRoleAssignments -eq $false)
{
$list.BreakRoleInheritance($true)
$list.Update()
}
$list.RoleAssignments.Add($assignment)
$list.Update()
}
It compiles and runs, but I was getting a lot of error messages about unassigned variables in the RoleAssignment addition. Very frustrating.
The problem was traced to $list = $web.Lists["$scopes[$i]"]
Powershell will not resolve the 'inner" variable, which cause the lookup to return a null value.
The solution was simple. Put the value in a variable and use the variable.
$name = $scopes[$i]
$list = $web.Lists["$name"]
I wish I had thought of that 2 hours ago.
Comments
Post a Comment