Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
こんにちは!そーまんです。
今回は、PowerShell を使いフォルダを作成し、アクセス権限を付与する方法について書いてみました。
色々な用途で使えるとは思いますが、これが自動でできますと、ユーザーの PC 管理が効率的にできるような感じですね。
企業で大量の PC を管理する場合は、例えばユーザーの PC の C ドライブに対してユーザーのアクセス権限が無い環境が多いかと思います。そこで、C ドライブ直下にログ格納用のフォルダを作成したり、また別のローカルドライブがある場合は、そこに一時作業用のフォルダを作成したりする場合があるかと思います。
フォルダの仕様
ここでは、ユーザーの PC の C ドライブ下の特定のフォルダに、ユーザーに一時的な作業領域を提供するフォルダを作ってみます。具体的には Work という一時作業用のフォルダを作成して、そのフォルダの下に、ログオンしたユーザー名 (User1) のフォルダを作成します。
フォルダの権限
フォルダの権限は以下のとおりにします。
フォルダ | フォルダに対しての権限 |
---|---|
C:\Work : | Administrators はフルコントロール、Users は読み取り |
C:\Work\User1 : | Administrators はフルコントロール、Users は読み取り、User1 はフルコントロール |
スクリプト
それでは、上記の内容をスクリプトで書いてみましたところ、以下のようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# ユーザー名のフォルダを変数に代入 $UserInfo = [System.Security.Principal.WindowsIdentity]::GetCurrent() $DomainUserName = $UserInfo.Name $UserName = $DomainUserName.Replace("SOMAENG", "") $UserFolder = $UserName # フォルダーのパス $FolderPath = "C:\Work\" # C:\Temp に ユーザー名のフォルダをくっつける $FolderPath = $FolderPath + "\" + $UserFolder # フォルダ作成 New-Item $FolderPath -ItemType Directory # フォルダ権限を取得 $ACL = Get-Acl $FolderPath # 権限の設定(引数:ユーザー名,アクセス権,下位フォルダ継承,下位オブジェクト継承,継承の制限,アクセス許可) $Permission = ($DomainUserName,"FullControl","ContainerInherit,ObjectInherit","None","Allow") # 権限の設定を反映 $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $Permission $ACL.SetAccessRule($AccessRule) $ACL | Set-Acl $FolderPath |
最後に
いかがでしょうか。
こんな感じで、フォルダの作成やアクセス権限がスクリプトでできると、ユーザーの PC の管理が統一できますし、楽で良いですね。もっと色々な方法を身に着けて多種多様な事ができるようになりたいと思います。
また、権限は設定できませんが、フォルダの作成であれば GPO でもできますので合わせてご参考になれば幸いです。
それでは最後までお読みいただきありがとうございました!