码迷,mamicode.com
首页 > 其他好文 > 详细

powershell文件权限操作

时间:2014-08-19 12:51:54      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   strong   

获取文件或文件夹访问权限

Get-Acl -Path <File or Folder Path> | Format-List

 

修改文件访问权限

修改文件访问权限需要用到Set-Acl命令,使用-Path参数指定要修改的文件路径,使用-AclObject参数指定一个对象,该对象相当于一个ACL模板,此ACL模板指定了用户访问资源的权限设定。该对象的设定需要调用"System.Security.AccessControl.FileSystemAccessRule"类。

1 $account = "test01win2k8r2\test"
2    $FileSystemRights = "FullControl"
3 
4    $objType = [System.Security.AccessControl.AccessControlType]::Allow
5    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($account,$FileSystemRights,$objType)
6    $Folder = "W:\Test\test.txt"
7    $acl = Get-Acl $Folder
8    $acl.SetAccessRule($accessRule)
9    Set-Acl -Path $Folder -AclObject $acl

 

还可以通过Get-Acl获取一个文件的访问权限,然后修改另一文件使其具有同样的访问权限:

Get-Acl "W:\Test\test01.txt" | Set-Acl -Path "W:\Test\test02.txt"

 

修改文件夹访问权限

与修改文件访问权限类似,同样应用Set-Acl命令,只是在调用FileSystemAccessRule时可以多指定参数InheritanceFlags和PropagationFlags来指定访问权限的设定是否被子文件或子文件夹继承:

http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.inheritanceflags.aspx

http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.propagationflags.aspx

 

 1  $account = "test01win2k8r2\test"
 2    $FileSystemRights = "FullControl"
 3    $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::ObjectInherit
 4    $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
 5    $objType = [System.Security.AccessControl.AccessControlType]::Allow
 6    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($account,$FileSystemRights,$InheritanceFlag,$PropagationFlag,$objType)
 7    $Folder = "W:\Test\"
 8    $acl = Get-Acl $Folder
 9    $acl.SetAccessRule($accessRule)
10    Set-Acl -Path $Folder -AclObject $acl

 


以上内容从网上借鉴可供参考,因项目最近经常出现一个问题就是website站点目录授予的用户权限一段时间后就会丢失,因此头让写一个判断文件夹用户权限是否存在不存在就添加上的Powershell脚本,因此开始看powershell资料,完成了本系列的学习笔记,并完成判断文件夹权限不存在就添加权限的完整脚本,完整脚本代码如下:
 1 echo "old Rights"#显示原有文件夹权限
 2 $path="E:\test\"#文件夹路径
 3 $rights="BUILTIN\Guests"#需要权限的用户
 4 (get-acl -path $path).access |Select-Object -Property IdentityReference #显示原有文件夹权限
 5 echo ""
 6 echo "****************************"
 7 echo ""
 8 echo ""
 9 echo "result:"
10 echo ""
11 $aa=(get-acl -path $path).access  | where-object -filterscript{$_.identityreference -eq $rights}#判断是否有权限
12 if ($aa -eq $null){
13     $account = $rights
14     $FileSystemRights = "FullControl"
15     $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::ObjectInherit
16     $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
17     $objType = [System.Security.AccessControl.AccessControlType]::Allow
18       
19     $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($account,$FileSystemRights,$InheritanceFlag,$PropagationFlag,$objType)
20     $Folder = $path
21     $acl = Get-Acl $Folder
22     $acl.SetAccessRule($accessRule)
23      
24     Set-Acl -Path $Folder -AclObject $acl
25     echo "success"
26 }else{
27  echo "Existing permissions" 
28 }
29 echo ""
30 echo ""
31 echo "****************************"
32 
33 echo "new Rights"#输出新的文件夹权限
34 echo ""
35 (get-acl -path $path).access |Select-Object -Property IdentityReference
36     
37     

 

powershell文件权限操作,布布扣,bubuko.com

powershell文件权限操作

标签:style   blog   http   color   使用   os   io   strong   

原文地址:http://www.cnblogs.com/binw/p/3921743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!