PowerShell: 파일 SV에 개인 폴더 만들기 & 할당량 설정

11568 단어 PowerShelltech
사전 AD 시작 환경에 있는 윈도SV로 구축된 파일 SV에서 개인 폴더를 한꺼번에 만들려고 PowerShell을 적었다.

하고 싶은 일


CSV 읽기
  • AD 사용자 이름 폴더 만들기
  • 사용자만 액세스할 수 있음
  • 할당량 설정
  • 기타
    • AD에 사용자가 있는지 판단
    · flag를 통해 폴더 생성, 할당량 변경, 폴더 삭제 판정

    사용법

  • import.csv의 두 번째 행에서 시작
    ※ 첫 줄 머리글 필요
  • CSV 레이아웃


    import.csv
    flag,UserName
    n,testuser01
    c,testuser02
    d,testuser03
    
    flag 판정 처리
    flag
    설명
    n
    폴더 만들기
    c
    할당량 변경
    d
    폴더 삭제
    2. 메모장에 "Folder Set.ps1"을 열고 작업 디렉토리 및 할당량 크기 지정
       
    3. "import.csv", "Folder-set.ps1"을 같은 폴더에 놓고 파일 SV를 통해 실행
     
    4. 폴더, 액세스 권한, 할당량만 설정하면 OK

    사전 준비

  • 폴더를 공유할 폴더 만들기
  • 생성된 폴더에 대한 액세스 권한으로 Users 등 필요하지 않은 폴더를 삭제합니다.
    (Administrators 및 SYSTEM만 OK)
  • Import-module FileServer ResourceManager 기능 추가

  • Import-module ActiveDirectory 기능 추가

  • 스크립트 완료


    Folder-Set.ps1
    Import-Module FileServerResourceManager
    Import-Module ActiveDirectory
    
    #作業ディレクトリを指定(最後に[\]必須)
    $workdir = "D:\test\"
    
    #クォータのサイズを指定(○○MB、○○GBで指定)
    $QuotaSize = 500MB
    
    cd $workdir
        Import-Csv $PSScriptRoot\import.csv -Encoding Default | ForEach-Object{
        $user = $_.UserName
        $targetpath = $workdir + $user
        
        #パラメータで処理分岐
        $switchflag = $_.flag
            switch ( $switchflag ) {
                #フォルダ作成処理
                n {
                    #コンソールのエラーを非表示にする
                    $ErrorActionPreference = "silentlycontinue"
    
                    #ユーザーがいるか判定。Get-ADUserでエラーだと「NULL」のまま。
                    $UserJudg = $NULL
                    $UserJudg = Get-ADUser -Identity $user
    
                    #コンソールのエラーを再表示する
                     $ErrorActionPreference = "continue"
    
                    if ( $UserJudg -eq $NULL ){
                        #エラー出力
                        Write-Host -NoNewline $user " はADにいません(n)"
                        Write-Output ""
    
                        } else {
                        #フォルダの存在判定
                        If(!(test-path $user))
                            {
                            #フォルダの作成
                            New-Item -Path $user -ItemType Directory | Out-Null
        
                            #アクセス権の付与(フルコントロール)
                            icacls $targetpath /grant ${user}:`(OI`)`(CI`)F /t /c /l /q | Out-Null
           
                            #クォータの設定(ハード制限クォータ)
                            New-FsrmQuota -Path $targetpath -Description "個人フォルダサイズ制限" -Size $QuotaSize | Out-Null
    
                        } else {
                           Write-Host -NoNewline $user " のフォルダはすでにあります(n)"
                           Write-Output ""
                       }
                   }
                }
    
                #クォータの変更(ハード制限クォータ)
                c {
                    If((test-path $user)){
                         Set-FsrmQuota -Path $targetpath -Description "個人フォルダサイズ制限" -Size $QuotaSize | Out-Null
    
                    } else {
                        Write-Host -NoNewline $user " のフォルダはありません(c)"
                        Write-Output ""
                    }
                }
    
                #フォルダ削除処理
                d {
                    If((test-path $user)){
                        #フォルダの削除(確認あり)
                        Remove-Item -Path $user | Out-Null
    
                        #フォルダの削除(確認なし)
                        #Remove-Item -Path $user -Force -Recurse  | Out-Null
    
                    } else {
                        Write-Host -NoNewline $user " のフォルダはありません(d)"
                        Write-Output ""
                    }
                }
                #flagエラー
                default {
                Write-Host -NoNewline $user " のflagはありません(f)"
                Write-Output ""
                 }
            }
    

    참조: 액세스 권한 확인


    "icacls 폴더 경로"를 통해 액세스 확인을 확인할 수 있습니다.
    icacls D:\test\* > access-access-list.txt
    
    grep 일을 하고 싶을 때
    icacls D:\test\* | findstr "検索したい文字列*" > access-list.txt
    

    좋은 웹페이지 즐겨찾기