1

I found a powershell script that creates folders (if they dont exist) and adds appropriate permissions. Below is the PS1 file (created by someone else)


################################################################################## # # # Script name: SetFolderPermission.ps1 # Author: [email protected] # Homepage: www.powershell.nu # # ################################################################################## param ([string]$Path, [string]$Access, [string]$Permission = ("Modify"), [switch]$help) function GetHelp() { $HelpText = @" DESCRIPTION: NAME: SetFolderPermission.ps1 Sets FolderPermissions for User on a Folder. Creates folder if not exist. PARAMETERS: -Path Folder to Create or Modify (Required) -User User who should have access (Required) -Permission Specify Permission for User, Default set to Modify (Optional) -help Prints the HelpFile (Optional) SYNTAX: ./SetFolderPermission.ps1 -Path C:\Folder\NewFolder -Access Domain\UserName -Permission FullControl Creates the folder C:\Folder\NewFolder if it doesn't exist. Sets Full Control for Domain\UserName ./SetFolderPermission.ps1 -Path C:\Folder\NewFolder -Access Domain\UserName Creates the folder C:\Folder\NewFolder if it doesn't exist. Sets Modify (Default Value) for Domain\UserName ./SetFolderPermission.ps1 -help Displays the help topic for the script Below Are Available Values for -Permission "@ $HelpText [system.enum]::getnames([System.Security.AccessControl.FileSystemRights]) } function CreateFolder ([string]$Path) { # Check if the folder Exists if (Test-Path $Path) { Write-Host "Folder: $Path Already Exists" -ForeGroundColor Yellow } else { Write-Host "Creating $Path" -Foregroundcolor Green New-Item -Path $Path -type directory | Out-Null } } function SetAcl ([string]$Path, [string]$Access, [string]$Permission) { # Get ACL on FOlder $GetACL = Get-Acl $Path # Set up AccessRule $Allinherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit" $Allpropagation = [system.security.accesscontrol.PropagationFlags]"None" $AccessRule = New-Object system.security.AccessControl.FileSystemAccessRule($Access, $Permission, $AllInherit, $Allpropagation, "Allow") # Check if Access Already Exists if ($GetACL.Access | Where { $_.IdentityReference -eq $Access}) { Write-Host "Modifying Permissions For: $Access" -ForeGroundColor Yellow $AccessModification = New-Object system.security.AccessControl.AccessControlModification $AccessModification.value__ = 2 $Modification = $False $GetACL.ModifyAccessRule($AccessModification, $AccessRule, [ref]$Modification) | Out-Null } else { Write-Host "Adding Permission: $Permission For: $Access" $GetACL.AddAccessRule($AccessRule) } Set-Acl -aclobject $GetACL -Path $Path Write-Host "Permission: $Permission Set For: $Access" -ForeGroundColor Green } if ($help) { GetHelp } if ($Path -AND $Access -AND $Permission) { CreateFolder $Path SetAcl $Path $Access $Permission } 

To run this script I use this command. ./SetFolderPermission.ps1 -Path E:\TestFolder\UsernameX -Access Domain\UsernameX -Permission modify

How can I make it so that i can just use one command and call it to create the folders from a CSV file?

0

2 Answers 2

1

This should do the trick:-

# Read in List of Users $ListofUsers=Get-Content "UserList.csv" foreach ($User in $ListofUsers) { SetFolderPermission.ps1 -Path E:\TestFolder\$User } 

0

I would modify Gary's command slightly, and use Import-Csv

# Read in List of Users $rows=Import-Csv "UserList.csv" foreach ($row in $rows) { $UsernameX = $row.UserName ./SetFolderPermission.ps1 -Path E:\TestFolder\$UsernameX -Access Domain\$UsernameX -Permission modify } 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.