--- /tmp/createArea.ps1 2015-06-15 10:41:50.000000000 +0200 +++ /tmp/createArea-2.0.ps1 2015-06-15 10:45:44.000000000 +0200 @@ -34,7 +34,7 @@ -The name of the institution/department you wish the directory to be created within. +The name of a institution or department. @@ -56,13 +56,23 @@ createArea -ServerAddress storage-al.slu.se -Share restricted$ -Department Omv -DirName AnotherDirectory +.EXAMPLE + +createArea -ServerAddress storage-um.slu.se -Share common$ -Department srh -DirName "DirectoryOne","DirectoryTwo","DirectoryThree" + .EXAMPLE -createArea -ServerAddress storage-um.slu.se -Share common$ -Department srh -DirName "DirectoryOne","DirectoryTwo","DirectoryThree" +createArea -ServerAddress storage-um.slu.se -Share common$ -Department NyInst + +.EXAMPLE + + + +createArea -ServerAddress storage-um.slu.se -Share common$ -Department "Inst1","Dept1","Inst2","Inst3" #> @@ -118,7 +128,15 @@ $DEPARTMENT = $Department -$SHARE_SEARCH_PATH = $SHARE_UNC_PATH + "\" + $DEPARTMENT +if (!$DirName) { + + $SHARE_SEARCH_PATH = $SHARE_UNC_PATH + +} else { + + $SHARE_SEARCH_PATH = $SHARE_UNC_PATH + "\" + $DEPARTMENT + +} if(!(Test-Path $SHARE_SEARCH_PATH)) { @@ -204,13 +222,29 @@ "common" { - $GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common" + $LEVEL + if (!$DirName) { + + $GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "_Common" + $LEVEL + + } else { + + $GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common" + $LEVEL + + } } "restricted" { - $GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted" + $LEVEL + if (!$DirName) { + + $GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "_Restricted" + $LEVEL + + } else { + + $GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted" + $LEVEL + + } } @@ -260,13 +294,29 @@ "common" { - $GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common" + if (!$DirName) { + + $GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "_Common" + + } else { + + $GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common" + + } } "restricted" { - $GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted" + if (!$DirName) { + + $GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "_Restricted" + + } else { + + $GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted" + + } } @@ -292,7 +342,15 @@ write-host "Creating Role group '$GROUP_NAME'." - New-ADGroup -Name "$GROUP_NAME" -SamAccountName $GROUP_NAME -Path $GLOBAL_OBJ_OU -GroupScope Global -OtherAttributes @{info=”AdminWebUser”} -Description "$AREA_TYPE - $DEPARTMENT-$PLACE-$DIRECTORY_NAME ($GROUP_NAME)" -Credential $CRED + if (!$DirName) { + + New-ADGroup -Name "$GROUP_NAME" -SamAccountName $GROUP_NAME -Path $GLOBAL_OBJ_OU -GroupScope Global -OtherAttributes @{info=”AdminWebUser”} -Description "$AREA_TYPE - $DEPARTMENT-$PLACE ($GROUP_NAME)" -Credential $CRED + + } else { + + New-ADGroup -Name "$GROUP_NAME" -SamAccountName $GROUP_NAME -Path $GLOBAL_OBJ_OU -GroupScope Global -OtherAttributes @{info=”AdminWebUser”} -Description "$AREA_TYPE - $DEPARTMENT-$PLACE-$DIRECTORY_NAME ($GROUP_NAME)" -Credential $CRED + + } } catch { @@ -314,17 +372,37 @@ "common" { - $ACL_GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common_RW" + if (!$DirName) { + + $ACL_GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "_Common_RW" + + $ROLE_GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "_Common" + + } else { + + $ACL_GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common_RW" - $ROLE_GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common" + $ROLE_GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Common" + + } } "restricted" { - $ACL_GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted_RW" + if (!$DirName) { + + $ACL_GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "_Restricted_RW" + + $ROLE_GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "_Restricted" + + } else { + + $ACL_GROUP_NAME = "ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted_RW" + + $ROLE_GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted" - $ROLE_GROUP_NAME = "Roll_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + "_Restricted" + } } @@ -482,7 +560,15 @@ $ACL = Get-Acl "share:\$DIRECTORY_NAME" - $ACL_GROUP_NAME = "AD\ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + $AREA_TYPE_STRING + $LEVEL + if (!$DirName) { + + $ACL_GROUP_NAME = "AD\ACL_" + $DEPARTMENT + "-" + $PLACE + $AREA_TYPE_STRING + $LEVEL + + } else { + + $ACL_GROUP_NAME = "AD\ACL_" + $DEPARTMENT + "-" + $PLACE + "-" + $DIRECTORY_NAME + $AREA_TYPE_STRING + $LEVEL + + } $ACL_ACCESS_LIST = $ACL.AccessToString -split '[\r\n]' @@ -598,11 +684,39 @@ -if ($DirName.gettype() | where {$_.BaseType -Match "Array"}) { +if ($DirName -And $Department) { - foreach ($DIRECTORY_NAME in $DirName) { + if ($DirName.gettype() | where {$_.BaseType -Match "Array"}) { - if (!(Test-Path $DIRECTORY_NAME)) { + foreach ($DIRECTORY_NAME in $DirName) { + + if (!(Test-Path $DIRECTORY_NAME)) { + + if (!($DIRECTORY_NAME -match "^[a-zA-Z0-9\s\-]+$")) { + + write-host "Illegal characters were found in '$DIRECTORY_NAME'. Only characters a-z, A-Z, 0-9 and '-' are allowed." + + exit 1 + + } + + createArea $SHARE_SEARCH_PATH $DIRECTORY_NAME $AREA_TYPE $DEPARTMENT $PLACE + + } else { + + write-host "File is unsupported as -DirName." + + exit 1 + + } + + } + + } elseif ($DirName.gettype() | where {$_.Name -Match "String"}) { + + if (!(Test-Path $DirName)) { + + $DIRECTORY_NAME = $DirName if (!($DIRECTORY_NAME -match "^[a-zA-Z0-9\s\-]+$")) { @@ -622,27 +736,71 @@ } + } else { + + write-host "-DirName must be either a string or an array of strings." + + exit 1 + } -} elseif ($DirName.gettype() | where {$_.Name -Match "String"}) { +} elseif (!$DirName -And $Department) { - if (!(Test-Path $DirName)) { + if ($Department.gettype() | where {$_.BaseType -Match "Array"}) { - $DIRECTORY_NAME = $DirName + foreach ($DIRECTORY_NAME in $Department) { - if (!($DIRECTORY_NAME -match "^[a-zA-Z0-9\s\-]+$")) { - write-host "Illegal characters were found in '$DIRECTORY_NAME'. Only characters a-z, A-Z, 0-9 and '-' are allowed." - exit 1 + if (!(Test-Path $DIRECTORY_NAME)) { + + if (!($DIRECTORY_NAME -match "^[a-zA-Z0-9\s\-]+$")) { + + write-host "Illegal characters were found in '$DIRECTORY_NAME'. Only characters a-z, A-Z, 0-9 and '-' are allowed." + + exit 1 + + } + + createArea $SHARE_SEARCH_PATH $DIRECTORY_NAME $AREA_TYPE $DEPARTMENT $PLACE + + } else { + + write-host "File is unsupported as -Department." + + exit 1 + + } } - createArea $SHARE_SEARCH_PATH $DIRECTORY_NAME $AREA_TYPE $DEPARTMENT $PLACE + } elseif ($Department.gettype() | where {$_.Name -Match "String"}) { + + if (!(Test-Path $Department)) { + + $DIRECTORY_NAME = $Department + + if (!($DIRECTORY_NAME -match "^[a-zA-Z0-9\s\-]+$")) { + + write-host "Illegal characters were found in '$DIRECTORY_NAME'. Only characters a-z, A-Z, 0-9 and '-' are allowed." + + exit 1 + + } + + createArea $SHARE_SEARCH_PATH $DIRECTORY_NAME $AREA_TYPE $DEPARTMENT $PLACE + + } else { + + write-host "File is unsupported as -Department." + + exit 1 + + } } else { - write-host "File is unsupported as -DirName." + write-host "-Department must be either a string or an array of strings." exit 1 @@ -650,7 +808,7 @@ } else { - write-host "-DirName must be either a string or an array of strings." + write-host "Neither -Department or -DirName was specified. Nothing to do." exit 1