Powershell脚本,多个循环在一个循环后停止

时间:2013-08-13 18:19:05

标签: loops powershell

我正在使用ShareUtils模块设置文件权限的脚本,由于某种原因,它不会继续我的第二和第三阶段循环。不确定为什么?

$input | Where-Object {$_.AccessMask -like 2032127} | Foreach-Object {
Get-Share -Name $_.Name | Add-SharePermission $_.User Allow FullControl | Set-Share
}

$input | Where-Object {$_.AccessMask -like 1245631} | Foreach-Object {
Get-Share -Name $_.Name | Add-SharePermission $_.User Allow Change | Set-Share
}

$input | Where-Object {$_.AccessMask -like 1179817} | Foreach-Object {
Get-Share -Name $_.Name | Add-SharePermission $_.User Allow Read | Set-Share
}

1 个答案:

答案 0 :(得分:1)

尝试重置$ input。一旦$ input被调用,它就会处理它的所有元素并向前移动直到它到达最后一个项目。

$input.reset()

更新

您也可以重写解决方案,例如:

$input | Foreach-Object {

    $perm = switch($_.AccessMask)
    {
        2032127 {'FullControl'; break}
        1245631 {'Change'; break}
        1179817 {'Read'; break}
    }

    if($perm)
    {
       Get-Share -Name $_.Name | Add-SharePermission $_.User Allow $perm | Set-Share        
    }       

}