在Powershell中,我如何使用变量从文件夹权限中删除组

时间:2019-11-01 15:04:57

标签: powershell

我目前正在努力工作,以使某些东西能够正常工作。 我正在尝试执行以下操作; 1.获取具有文件夹权限的现有组(基于通配符) 2.从文件夹中删除这些组

我的脚本在下面;

$currentgroups = (get-acl $folderpath).access | where-object -property identityreference -like '*FS1*' | ft identityreference 
$objACL = Get-ACL $folderpath
foreach ($group in $currentgroups){
$accessremoval = New-Object System.Security.AccessControl.FileSystemAccessRule @($group, 'Modify', 'ContainerInherit', 'None', 'Allow')
$objACL.RemoveAccessRuleAll($accessremoval)
set-acl $folderpath $objACL
}

$ currentgroups的工作原理很不错,如果我输入,它会返回两个组的列表(在这种情况下)。

我跌倒的地方是在foreach循环上,它具体地使$ objacl.removaccessruleAll($ accessremoval)位起作用,因为它返回以下内容;

使用“ 1”作为参数调用“ RemoveAccessRuleAll”的异常:“某些或所有身份引用无法转换。”

如果我在$ accessremoval中输入群组名称,例如

$accessremoval = New-Object System.Security.AccessControl.FileSystemAccessRule @('FS1-Engineering (RO)', 'Modify', 'ContainerInherit', 'None', 'Allow')

工作正常...我在做什么错? 我试过将$ Group放在s和“”中,但到目前为止还没有运气。

提前谢谢。

保罗。

1 个答案:

答案 0 :(得分:0)

嗯...似乎ft做了一些奇怪的事情...无论如何都要删除它,然后在foreach中引用.identityreference,例如foreach($ currentgroups.identityreference中的$ group)可以达到目的。

一切顺利。

保罗。