Exchange 2010 Powershell指令碼攻略(二)
AddUsersToPFRecursive
Param(
[string] $Server,
[string] $TopPublicFolder = "",
[string] $User = "",
[string] $Permissions = ""
)
# 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
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
`t`t[-TopPublicFolder
`t`t[-User
`t`t[-Permissions
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"
}
# The cast to [void] is to ignore the result of the Add method,
# which normally returns an int value. This int value is output to the
# console and is of no interest to anybody.
$pfsToChange = new-object System.Collections.ArrayList
invoke-expression $getpfcmd | foreach {
$OriginatingServer = $_.OriginatingServer
[void]$pfsToChange.Add($_.Identity)
}
$pfsToChange | foreach {
$permission = get-PublicFolderClientPermission -identity $_ -user $User -erroraction Stop -server $OriginatingServer
if ($permission -ne $null) {
$permission | remove-PublicFolderClientPermission -identity $_ -server $OriginatingServer -Confirm:$false
}
add-PublicFolderClientPermission -identity $_ -user $user -AccessRights $Permissions -server $OriginatingServer;
}
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23700676/viewspace-1052328/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Exchange 2010 Powershell指令碼攻略(十五)指令碼
- Exchange 2010 Powershell指令碼攻略(十四)指令碼
- Exchange 2010 Powershell指令碼攻略(十三)指令碼
- Exchange 2010 Powershell指令碼攻略(十二)指令碼
- Exchange 2010 Powershell指令碼攻略(十一)指令碼
- Exchange 2010 Powershell指令碼攻略(十)指令碼
- Exchange 2010 Powershell指令碼攻略(九)指令碼
- Exchange 2010 Powershell指令碼攻略(八)指令碼
- Exchange 2010 Powershell指令碼攻略(七)指令碼
- Exchange 2010 Powershell指令碼攻略(六)指令碼
- Exchange 2010 Powershell指令碼攻略(五)指令碼
- Exchange 2010 Powershell指令碼攻略(四)指令碼
- Exchange 2010 Powershell指令碼攻略(三)指令碼
- Exchange 2010 Powershell指令碼攻略(一)指令碼
- powershell指令碼指令碼
- PowerShell 指令碼中的密碼指令碼密碼
- PowerShell 指令碼執行策略指令碼
- powershell重新命名指令碼指令碼
- Exchange 2010搭建
- Bash指令碼debug攻略指令碼
- 開機自啟動Powershell指令碼指令碼
- linux shell 指令碼攻略筆記Linux指令碼筆記
- 【黑客基礎】Windows PowerShell 指令碼學習(上)黑客Windows指令碼
- 最簡單的一個powershell的指令碼指令碼
- Exchange 2010需要的網路埠
- 微軟宣佈全新命令列+指令碼工具:PowerShell 7微軟命令列指令碼
- 五個實用的SQL Server PowerShell指令碼OMSQLServer指令碼
- 利用powershell指令碼Windows hosts記錄替換IP指令碼Windows
- shell指令碼(二)指令碼
- Win10使用Powershell提示禁止執行指令碼怎麼辦 Win10使用Powershell提示禁止執行指令碼如何解決Win10指令碼
- shell指令碼攻略--DNS正向解析一鍵部署指令碼DNS
- 利用 Powershell 編寫簡單的瀏覽器指令碼瀏覽器指令碼
- 【連結】LINUX SHELL指令碼攻略筆記[速查]Linux指令碼筆記
- 《Linux Shell指令碼攻略(第2版)》書評Linux指令碼
- nuget打包檔案丟失如何使用powershell指令碼解決指令碼
- 使用VSCode遠端除錯惡意Powershell指令碼VSCode除錯指令碼
- 【VMware VCF】使用 PowerShell 指令碼管理 SDDC Manager 中的軟體包。指令碼
- 快速掌握RabbitMQ(二)——四種Exchange介紹及程式碼演示MQ