Jump to content

Exchange 2010, PublicFolder, geleiche Berechtigungen wie vorhandener User setzten


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

würde gerne per Script einem neuen User die gleichen PublicFolder-Berechtigungen wie die eines vorhandenen Users zuweisen. Natürlich könnte ich diese per

Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | where {($_.User -like "*%Username%*") }

auslesen und anschliessend per Hand (AddUsersToPFRecursive.ps1) die einzelnen Berechtigungen setzen. Aber schöner und komfortabler wäre ein Script bei welchem ich den vorhandenden und den neuen User als Parameter angeben kann. Das Script setzt dann die entsprechenden Berechtigungen beim neuen gleich wie beim vorhandenen User und gibt mir dann ein "kleines" txt-File als Logfile aus.

 

Leider sind meine Scripting Erfahrungen nicht gut genug und deshalb hoffe ich, dass mir einer von Euch weiterhelfen kann.

 

Gruss

seehas

Link zu diesem Kommentar

Ja, klar. Das war auch meine Intension. Allerdings musste ich es noch ausführlich testen. Hier das .ps1 Script: 

####################################################################################################

# ADD A NEW USER, SAME PUBLIC FOLDER PERMISSIONS AS AN EXISTING USER

#

# $UserOld -> EXISTING USER

# 4UserNew -> NEW USER

#

# THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK

# OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER.

####################################################################################################
Param(

 [Parameter(Mandatory = $true)]

 [string] $UserOld = "",

 [Parameter(Mandatory = $true)]

 [string] $UserNew = ""

)
####################################################################################################

# VALIDATE SCRIPT PARAMETERS

####################################################################################################
function ValidateParams

{

  $validInputs = $true

  $errorString =  ""
  if ($UserOld -eq "")

  {

    $validInputs = $false

    $errorString += $AddUserWithUserOnPFRecursive_LocalizedStrings.res_0001

  }
  if ($UserNew -eq "")

  {

    $validInputs = $false

    $errorString += $AddUserWithUserOnPFRecursive_LocalizedStrings.res_0002

  }
  if (!$validInputs)

  {

    Write-error "$errorString"

  }
  return $validInputs

}
####################################################################################################

# LOAD HASHTABLE OF LOCALIZED STRING

####################################################################################################
Import-LocalizedData -BindingVariable AddUserWithUserOnPFRecursive_LocalizedStrings -FileName AddUserWithUserOnPFRecursive.strings.psd1
####################################################################################################

# VALIDATE PARAMETERS

####################################################################################################
$ifValidParams = ValidateParams;
if (!$ifValidParams) { exit; }
else

{

 $pflist = "get-publicfolder -Recurse -resultsize unlimited"

}
$pfsToAdd = new-object System.Collections.ArrayList

invoke-expression $pflist | foreach {

 $OriginatingServer = $_.OriginatingServer

 [void]$pfsToAdd.Add($_.Identity)

}
$pfsToAdd | foreach {

 $permission = get-PublicFolderClientPermission -identity $_ -user $UserOld -erroraction Stop
 if ($permission -ne $null) {

  add-PublicFolderClientPermission -identity $_ -user $UserNew -AccessRights $permission.AccessRights

 }

}
####################################################################################################

# PUBLICFOLDER PERMISSIONS AS TXT-FILE FOR BOTH USER

####################################################################################################
Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | where {($_.User -like "*$UserOld*") } | Out-File C:\$UserOld.txt

Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | where {($_.User -like "*$UserNew*") } | Out-File C:\$UserNew.txt
exit;

...und das .psd1 File:

ConvertFrom-StringData @'

###

res_0001 = \nMissing parameter: The -UserOld parameter is required. Use a valid user name or personnel number.

res_0002 = \nMissing parameter: The -UserNew parameter is required. Use a valid user name or personnel number

###

'@

 
Link zu diesem Kommentar

Ganz ehrlich? Das ist eine Lösung der Kategorie "Man nimmt eine tiefgefrorene Banane, um einen Nagel in die Wand zu schlagen". Dein Problem liegt ganz woanders:

 

Vergib die Berechtigungen NIE an Benutzer, sondern IMMER an Gruppen. Schachtel die Gruppen, so dass Berechtigung (Lesen, Schreiben, Ändern, Löschen, was Du halt unterscheiden willst) getrennt ist von Funktion (Verwaltung, Einkauf, Produktion, ...).

 

Dann musst Du nur noch die Anwender in Gruppen packen und hast damit auch eine Dokumentation, wer worauf zugreifen darf.

Link zu diesem Kommentar

Ein Problem ist das eigentlich nicht und generell ist Deine ja auch Aussage richtig. ABER....

 

Es gibt immer Ausnahmen von der Regel und ich hatte gerade ein paar solcher Fälle, da hat es mich einfach genervt die Berechtigungen einzeln herauszusuchen und entsprechend neu zu setzten. Da habe ich für mich eine Lösung gesucht und wollte diese jetzt auch mit den Board-Mitgliedern teilen.

Link zu diesem Kommentar

Da hast Du recht. Trotzdem wird es eine Weile dauern bis eine vorhandenen und gewachsen Struktur umgestellt ist.

Dann fang Du einfach an, ansonsten wird das nie etwas.

 

Denn wie ich leidvoll erfahren musste arbeitet nicht jeder Admin mit Gruppen. Warum auch immer.

 

Weil sie (er) es nicht wissen. Zeig es ihnen (ihm) wie einfach es ist, insbesonders wenn neue MA kommen. Der Aha Effekt kommt sicherlich recht schnell. ;)

Link zu diesem Kommentar

 

Denn wie ich leidvoll erfahren musste arbeitet nicht jeder Admin mit Gruppen. Warum auch immer.

Weil sie (er) es nicht wissen. Zeig es ihnen (ihm) wie einfach es ist, insbesonders wenn neue MA kommen. Der Aha Effekt kommt sicherlich recht schnell. ;)

 

Also mindestens einer hier im Thread arbeitet grad offensichtlich mit Nutzern die er irgenwie kopiert anstatt jetzt dort mit Gruppen anzufangen. Warum auch immer. :p

 

Bye

Norbert

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...