【问题标题】:Permit Domain Admins access to roaming user profiles and redirected folders允许域管理员访问漫游用户配置文件和重定向文件夹
【发布时间】:2017-02-14 21:12:51
【问题描述】:

我开始强迫自己为 GPO 使用 PowerShell 脚本。我已更新 GPO 以允许这样做,但我正在寻求允许域管理员访问现有漫游用户配置文件的用户配置文件。

icacls.exe \\sharedpath\user` profiles$\%username%.v2 /grant “domain\Domain Admins”:F /T /Q

这是用于用户配置文件的。花了一些谷歌搜索找出` 处理路径中的空格。但是,我真的很坚持:

icacls.exe : 无效参数“域\域管理员”

我似乎在参数中找不到任何与空格相关的内容。我尝试了明显的' char 但这没有区别。

【问题讨论】:

  • 当你有group policy 做同样的事情时不要使用脚本。不要使用印刷引号。将带空格的路径放在引号中,而不是用反引号转义空格。此外,PowerShell 无法识别环境变量的 % 表示法,并且 CMD 无法将反引号识别为转义字符。如果由于某种原因您需要从 PowerShell 运行 icacls 命令行,请这样做:icacls.exe "\\sharedpath\user profiles$\$env:USERNAME.v2" /grant "domain\Domain Admins:F" /T /Q

标签: powershell group-policy roaming-profile


【解决方案1】:

powershell 方式:

$profile = "\\sharedpath\user profiles`$\$($env:username).v2"

$currentAcl = (Get-Item $profile).GetAccessControl('Access')
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule -ArgumentList "Domain\Domain Admins",'Full','ContainerInherit,ObjectInherit','None','Allow'
$currentAcl.SetAccessRule($rule)
$currentAcl | Set-Acl -path $profile

不言而喻,在登录脚本中使用它之前,您应该对其进行彻底测试。

【讨论】:

  • 不需要转义共享名称中的尾随$$env:username 周围的子表达式也不是(如果您想安全起见,请使用 ${env:username})。此外,Set-Acl 有时会在设置 ACL 时遇到问题,例如如果对象的所有者不是运行 cmdlet 的用户或其任何组。在微软修复 icacls 是更可靠的方法之前。
  • 您对所有权问题的看法是正确的。我已经用更合适的方法替换了Get-Acl。转义$ 和子表达式是风格选择,比什么都重要。但注意未来:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
相关资源
最近更新 更多