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

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

修改文件访问权限

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

 $account = "test01win2k8r2\test"
$FileSystemRights = "FullControl" $objType = [System.Security.AccessControl.AccessControlType]::Allow
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($account,$FileSystemRights,$objType)
$Folder = "W:\Test\test.txt"
$acl = Get-Acl $Folder
$acl.SetAccessRule($accessRule)
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

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

最新文章

  1. DebugLog 打印方法执行时间
  2. hdu 1232, disjoint set, linked list vs. rooted tree, a minor but substantial optimization for path c 分类: hdoj 2015-07-16 17:13 116人阅读 评论(0) 收藏
  3. 《轻量级Java Web整合开发入门SSH》 - 快速理解Java框架的又一积木
  4. 【原】iOS学习39网络之数据请求
  5. 博客后台迁移至i.cnblogs.com及小经验分享
  6. 2014年小结之sql语句优化
  7. 20145220java程序设计第九周学习总结
  8. 转:synchronized和LOCK的实现原理---深入JVM锁机制
  9. kindeditor 下图片链接取消边框
  10. Google Maps Android API v2 (3)- 地图添加到Android应用程序
  11. 三大框架之hibernate的反转
  12. Oralce生成前N年的年数据
  13. SSH 配置
  14. HTML5中 HTML格式化/HTML样式/链表/表格-样式 韩俊强的博客
  15. windows linux—unix 跨平台通信集成控制系统----文件搜索
  16. ffmpeg安装
  17. docker小结
  18. zabbix 自定义监控项简单案例
  19. 从数据库中修改zabbix的验证方式 0 内置 1 LDAP 2 HTTP
  20. Java 获取CPU、内存、外网IP等硬件信息

热门文章

  1. Ceph源码解析:CRUSH算法
  2. [转]SSIS: By coding
  3. RenderMonkey 练习 第四天 【OpenGL Texture Bump】
  4. PHP中 &quot;{}&quot; 大括号的用法和总结
  5. Android EditText 状态切换
  6. activemq订阅发布模式(非持久订阅)
  7. hdu5293(2015多校1)--Tree chain problem(树状dp)
  8. 在页面左右一个悬浮div兼容IE6 IE7 8 9 Firefox chrome
  9. LeetCode Add Binary |My Solution
  10. 基于Thrift的跨语言、高可用、高性能、轻量级的RPC框架