Zum Inhalt springen

EX2K7 - Powershell hilfe


Enno

Empfohlene Beiträge

Hallo alle zusammen.

Ich bräuchte mal ne Änderung eines schon bestehenden Powershell Scripts.

Problem ist, das es bei uns in den Zugriffsrechten der ÖO einigen Wildwuchs gibt.

z.B. gibt es noch Rechte für User die garnicht mehr exisitieren.

Ist:

Script wird aufgerufen mit TopFolder, Username, Permission

Und setzt dann ab diesem Folder die Rechte des Users in diesem und allen Unterordnern neu.

Soll

Aufruf ohne alles

am Anfang festzulegender Parameter: TopFolder, Server

Das Script soll dann in allen Unterordnern ALLE aktuell existierenden Berechtigungen bis auf Administrator aufheben und durch neue ersetzen.

AddUsersToPfRecursive.ps1

# Copyright (c) 2006 Microsoft Corporation. All rights reserved.

#

# 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(

	[string] $Server,

	[string] $TopPublicFolder = "",

	[string] $User = "",

	[string] $Permissions = "",

    [string] $confirmpreference ="none"

)


# This function validates the scripts parameters

function ValidateParams

{

  $validInputs = $true

  $errorString =  ""


  if ($TopPublicFolder -eq "")

  {

    $validInputs = $false

    $errorString += "`nMissing parameter: The -TopPublicFolder parameter is required. Please pass in a valid Public Folder path, name, or entryID."

  }


  if ($User -eq "")

  {

    $validInputs = $false

    $errorString += "`nMissing parameter: The -User parameter is required. Please pass in a valid user name, email address or GUID"

  }


  if ($Permissions -eq "")

  {

    $validInputs = $false

    $errorString += "`nMissing parameter: The -Permissions parameter is required. Please pass in a valid MAPI permission set"

  }


  if (!$validInputs)

  {

    Write-error "$errorString"

  }


  return $validInputs

}


# Function that returns true if the incoming argument is a help request

function IsHelpRequest

{

	param($argument)

	return ($argument -eq "-?" -or $argument -eq "-help");

}


# Function that displays the help related to this script following

# the same format provided by get-help or <cmdletcall> -?

function Usage

{

@"


NAME:

`tAddUsersToPFRecursive.ps1


SYNOPSIS:

`tAdds a specific user with specific permissions to the client

`tpermissions list for a public folder, and all the contained folders

`tunder it. If the user is already listed in the client permissions list

`tfor a particular folder, the user's permissions are updated to the new

`tspecified set.


SYNTAX:

`tAddUsersToPFRecursive.ps1

`t`t[-Server <ServerIdParameter>]

`t`t[-TopPublicFolder <PublicFolderIdParameter>]

`t`t[-User <PublicFolderUserIdParameter>]

`t`t[-Permissions <PublicFolderAccessRight collection>]


PARAMETERS:

`t-Server (optional)


`t`tThe server to operate against. Must be an Exchange 2007 Mailbox server

`t`twith a public folder database. Defaults to a convenient server.


`t-TopPublicFolder (required)

`t`tThe folder identity of the top of the tree of folders to modify


`t-User (required)

`t`tThe identity of the user to add to the client permissions.


`t-Permissions (required)

`t`tA MAPI client permission set


`t-------------------------- EXAMPLE 1 --------------------------


C:\PS> .\AddUsersToPFRecursive.ps1 -TopPublicFolder "\Folder" -User "user" -Permissions {Reviewer,Owner}


`t-------------------------- EXAMPLE 2 --------------------------


C:\PS> .\AddUsersToPFRecursive.ps1 -Server "MyEx2007Server" -TopPublicFolder "\Folder" -User "user" -Permission {Reviewer,Owner}


RELATED LINKS:

`tAddUsersToPFRecursive.ps1

`tRemoveUserFromPFRecursive.ps1

`tReplaceUserPermissionOnPFRecursive.ps1

`tReplaceUserWithUserOnPFRecursive.ps1

`tGet-Help


"@

}


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

# Script starts here

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


# Check for Usage Statement Request

$args | foreach { if (IsHelpRequest $_) { Usage; exit; } }


# Validate the parameters

$ifValidParams = ValidateParams;


if (!$ifValidParams) { exit; }


if ($server)

{

	$getpfcmd = "get-publicfolder -server $Server -identity $TopPublicFolder -Recurse -resultsize unlimited"

}

else

{

	$getpfcmd = "get-publicfolder -identity $TopPublicFolder -Recurse -resultsize unlimited"

}


invoke-expression $getpfcmd | foreach {

	$permission = get-PublicFolderClientPermission -identity $_.Identity -user $User -erroraction Stop -server $_.OriginatingServer


	if ($permission -ne $null) {

		$permission | remove-PublicFolderClientPermission -identity $_.Identity -server $_.OriginatingServer 

	}


	add-PublicFolderClientPermission -identity $_.Identity -user $user -AccessRights $Permissions -server $_.OriginatingServer;

}

wenn ich das richtig sehe müsste ja nur dieser Teil hier:
if ($server)

{

	$getpfcmd = "get-publicfolder -server $Server -identity $TopPublicFolder -Recurse -resultsize unlimited"

}

else

{

	$getpfcmd = "get-publicfolder -identity $TopPublicFolder -Recurse -resultsize unlimited"

}


invoke-expression $getpfcmd | foreach {

	$permission = get-PublicFolderClientPermission -identity $_.Identity -user $User -erroraction Stop -server $_.OriginatingServer


	if ($permission -ne $null) {

		$permission | remove-PublicFolderClientPermission -identity $_.Identity -server $_.OriginatingServer 

	}


	add-PublicFolderClientPermission -identity $_.Identity -user $user -AccessRights $Permissions -server $_.OriginatingServer;

}

geändert werden.

Ich hab nur sowas von keine Zeit grade mich in die Powershell Programmierung reinzuarbeiten und sollte das Script recht dringend haben.

Danke schonmal für alle die mir dabei helfen können.

Gruß

Enno

P.S. bin ich damit hier eigentlich richtig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nope, das is nen Windows 2008 Server mit Exchange 2007.

Warum da Powershell v1 drauf ist?keine ahnung.

wüsste nich mal wie ich da Powershell v?? drauf bekomme.

Aufruf ohne alles = ich gebe dem Script keine weiteren Parameter von aussen mit.

Ich brauche einfach nen script das die berechtigungen entfernt und dann neu setzt.

da meine User es schaffen regelmässig Ordnerstrukturen anzulegen die völlig verbogene Berechtigungen haben, aber einfach nur die darunterliegenden erben sollten. War einfach meine Idee, ein so an die gewollten Berechtigungen angepasstes Script, das 1mal in der Woche oder so läuft und alles wieder gerade biegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...