windows - 自动在共享上创建文件夹并分配正确的权限
问题描述
我有这个软件,它要求每个用户都有一个个人文件夹,只有他们可以在共享中查看,就像主文件夹一样。现在我正在处理每次用户登录时都会执行的脚本,我希望脚本检查共享上是否已经有一个带有他们的 SAMaccountname 的文件夹,如果没有,它必须创建一个正确的权限。
我对 PowerShell 一点也不擅长,也不能再进一步了,我有它检查它并为用户分配正确权限的部分。但域管理员也需要完全控制,服务帐户需要 R&W 权限。有没有人可以帮助我进一步完成剧本?任何努力和帮助都将不胜感激。
当前脚本:路径很奇怪,因为我在 VMWare 上对其进行了测试。
$Path = "\\Win-hnf1r0tnhgh\F\Scans\$($ENV:USERNAME)"
if (!(Test-Path -Path $Path)) {
New-Item -Path $Path -ItemType Directory
}
$Acl = Get-Acl -Path $Path -ErrorAction 'Stop'
$Acl.SetAccessRuleProtection($True, $True) > $null
Set-Acl -Path $Path -AclObject $Acl -ErrorAction 'Stop'
$Acl = Get-Acl -Path $Path
$Acl.Access.Where{$_.IdentityReference -eq "BUILTIN\Users"}.ForEach{$Acl.RemoveAccessRule($_) > $null}
$PermissionChange = [System.Security.AccessControl.FileSystemAccessRule]::new($ENV:USERNAME, 'Modify', "ContainerInherit,ObjectInherit", "None", "Allow")
$Acl.AddAccessRule($PermissionChange) > $null
Set-Acl -Path $Path -AclObject $Acl -ErrorAction 'Stop'
解决方案
我发现使用本机 powershell 甚至 .NET 修改 ACL 过于复杂。
您可以使用它通过一行设置完全控制:
ICACLS "$($Path)" /grant "DOMAINSHORTNAME\$($ENV:USERNAME):(OI)(CI)F" /T
您可以根据需要调整 ICACLS cmd,网上有大量示例
只需运行该命令几次,每个需要权限的帐户一次。
推荐阅读
- c++ - pthread_kill SIGUSR1 作为 SIGBUS 接收
- javascript - 如何在 ajax 请求中包含字符串值和图像文件到后端?
- python - 编辑列表中的字符串
- html - 关闭 html wordpress 中的打开标签
- sql - 解析动态 SQL 语句中使用的参数中的单引号
- html - 在 IE 中播放按钮边框半径问题
- perl - 在 perl-remd-grp.perl 第 22 行的连接 (.) 或字符串中使用未初始化的值 $angle
- hbase - Columnar DB中“主键是数据”的含义是什么
- spring-boot - Springboot项目从1.4.2.REALESE改成2.1.7.REALESE后不起作用
- python-3.x - python pandas中列值为null时如何编写if-else语句?