溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

POwershell 更改文件權(quán)限

發(fā)布時(shí)間:2020-07-11 18:13:16 來源:網(wǎng)絡(luò) 閱讀:8282 作者:beanxyz 欄目:開發(fā)技術(shù)

今天需要給某個(gè)網(wǎng)絡(luò)共享的大文件重新配置一個(gè)權(quán)限。這個(gè)文件夾下面有很多亂七八糟的小文件,很多創(chuàng)建人甚至已經(jīng)離開公司了。如果一個(gè)個(gè)地目錄手動(dòng)修改所有者權(quán)限,再打開繼承關(guān)系,這樣比較麻煩,這個(gè)時(shí)候自然是用腳本比較方便了。

#網(wǎng)上找的現(xiàn)成的高級(jí)方法來enable繼承關(guān)系
function Set-NTFSInheritance {
<#    
        .SYNOPSIS
        Enable or Disable the NTFS permissions inheritance.
        .DESCRIPTION
        Enable or Disable the NTFS permissions inheritance on files and/or folders.
        .EXAMPLE
        $Folders = Get-Childitem -Path 'e:\homedirs' | Where-Object {$_.Attributes -eq 'Directory'}
        $Folders | foreach {
            $_ | Set-NTFSInheritance -Enable
        }
        .NOTES
        Author   :  Jeff Wouters
        Date     :  8th of May 2014
#> 
    [cmdletbinding(defaultparametersetname='Enable')]
    param (
        [parameter(mandatory=$true,position=0,valuefrompipeline=$true,parametersetname='Enable')]
        [parameter(mandatory=$true,position=0,valuefrompipeline=$true,parametersetname='Disable')]
        $Path,
        [parameter(mandatory=$false,parametersetname='Enable')][switch]$Enable,
        [parameter(mandatory=$false,parametersetname='Disable')][switch]$Disable
    )
    begin {
    } process {
        $ACL = get-acl $_.FullName
        switch ($PSCmdlet.ParameterSetName) {
            'Enable' {
                $ACL.SetAcce***uleProtection($false,$false)
            }
            'Disable' {
                $ACL.SetAcce***uleProtection($true,$true)
            }
        }
        try {
            $ACL | Set-Acl -Passthru
        } catch {
            $_.Exception
        }
    } end {
    }
}

#自己調(diào)用一下上面的方法,基本上就是三步走,第一個(gè)奪取所有權(quán);第二打開繼承關(guān)系;第三在最上面設(shè)置權(quán)限
function ChangePermission {
[cmdletbinding(defaultparametersetname='Enable')]
    param (
        [Parameter(Mandatory=$true)]
        [string]
        $path,
        [Parameter(Mandatory=$true)]
        [string]
        $group
    )
   #Step 1: take over ownership
    takeown.exe  /f $path /r /d Y
    #Step 2:  enable inheritance for all subfolders
    $Folders = Get-Childitem -Path $path -Recurse
    $Folders | foreach {
        $_ | Set-NTFSInheritance -Enable
    }
    #Step3:   setup NTFS Modify permission from the parent folder
    $perm2=':(OI)(CI)(M)'
    write-host $path -ForegroundColor Cyan
    icacls $path /grant "$($group)$perm2"
}

#最后調(diào)用函數(shù)即可

$parent="\\syd02\Creative TRACK\CLIENT FOLDERS\WESTPAC"
Get-ChildItem  $parent | foreach {
$_.fullname
ChangePermission -path $_.FullName -group "Sydney Track Creative" 
}



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI