【问题标题】:Using previous years rights and permissions for new year folder structure script新年文件夹结构脚本使用往年权限
【发布时间】:2016-09-27 17:10:34
【问题描述】:

是否可以编写一个 powershell 脚本来创建我在文本文件中的文件夹结构,如下所示:

D:\Dept\AD\16-17\Audit\FIR
D:\Dept\AD\16-17\Budget\Working
D:\Dept\AD\16-17\Budget\Final
D:\Dept\AD\16-17\Correspondence\MediaReleases
D:\Dept\AD\16-17\Correspondence\DL
D:\Dept\AD\16-17\Correspondence\HF
D:\Dept\AD\16-17\Correspondence\Tax
D:\Dept\CC\QualityAssurance\16-17\Audit\FIR
D:\Dept\CC\QualityAssurance\16-17\Budget\Working
D:\Dept\CC\QualityAssurance\16-17\Budget\Final

但是要拥有从已经存在的上一年写入的权限和权限?唯一不同的年份是哪里的文件夹结构?

D:\Dept\AD\15-16\Audit\FIR
D:\Dept\AD\15-16\Budget\Working
D:\Dept\AD\15-16\Budget\Final
D:\Dept\AD\15-16\Correspondence\MediaReleases
D:\Dept\AD\15-16\Correspondence\DL
D:\Dept\AD\15-16\Correspondence\HF
D:\Dept\AD\15-16\Correspondence\Tax
D:\Dept\CC\QualityAssurance\15-16\Audit\FIR
D:\Dept\CC\QualityAssurance\15-16\Budget\Working
D:\Dept\CC\QualityAssurance\15-16\Budget\Final

我只是想创建新的一年,但保持与上一年相同的所有权利和权限。前一年还有其他文件,所以我试图让 txt.file 创建文件夹,然后以某种方式获取前几年的权利和写入新文件夹的权限。这可能吗?

@sapl 收到两个错误:

Directory: D:\Dept\DC\16-17\OSA


Mode                LastWriteTime     Length Name                                                                                                                                                                        
----                -------------     ------ ----                                                                                                                                                                        
d----         9/27/2016   4:45 PM            OperationalReports                                                                                                                                                          
Set-ACL : The security identifier is not allowed to be the owner of this object.
At line:19 char:56
+     Get-ACL $currentFolder.Replace("16-17", "15-16") | Set-ACL $currentFolder
+                                                        ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (D:\Dept\DC\16-17\OSA\OperationalReports:String) [Set-Acl], InvalidOperationException
    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand


Directory: D:\Dept\CC\NorthRiver\16-17\StaffAdministration


Mode                LastWriteTime     Length Name                                                                                                                                                                        
----                -------------     ------ ----                                                                                                                                                                        
d----         9/27/2016   4:45 PM            CFCA                                                                                                                                                                        
Set-ACL : The security identifier is not allowed to be the owner of this object.
At line:19 char:56
+     Get-ACL $currentFolder.Replace("16-17", "15-16") | Set-ACL $currentFolder
+                                                        ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (D:\Dept\CC\Nort...nistration\CFCA:String) [Set-Acl], InvalidOperationException
    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand

【问题讨论】:

    标签: powershell


    【解决方案1】:

    假设您有一个文件“folders.txt”,其中包含所需的文件夹,每行一个,您可以执行以下操作:

    foreach ($currentFolder in (Get-Content .\folders.txt)) {
        md $currentFolder  # Create Folder
        (Get-Item $currentFolder.Replace("16-17", "15-16")).GetAccessControl("Access") | Set-ACL $currentFolder
    }
    
    • Get-Content 读取folders.txt 的内容并将其作为字符串数组返回
    • foreach 循环遍历数组,每一行命名为 $currentFolder
    • md 创建文件夹(New-Item 的别名)
    • Get-ACL 获取旧文件夹的 ACL/权限。它采用新创建文件夹的文件夹路径,将“16-17”替换为“15-16”并获取旧文件夹的 ACL。关于Why does Set-Acl on the drive root try to set ownership of the "object"?Get-ACL 在更改所有者时无法正常工作。
    • Set-ACL 设置从旧文件夹通过管道的 ACL,并将其设置为新创建的文件夹。

    还请确保您在提升的 PowerShell 控制台中运行它(“以管理员身份运行”)。

    希望对你有帮助

    【讨论】:

    猜你喜欢
    • 2021-05-13
    • 2014-03-21
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多