Exchange 2010 Powershell脚本攻略(一)

AddReplicaToPFRecursive

Param(

[string] $Server,

[string] $TopPublicFolder = "",

[string] $ServerToAdd = ""

)

# 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 ($ServerToAdd -eq "")

{

$validInputs = $false

$errorString += "`nMissing parameter: The -ServerToAdd parameter is required. Please pass in a valid mailbox server identity"

}

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:

`tAddReplicaToPFRecursive.ps1

SYNOPSIS:

`tAdds a new server to the replica list for a public folder, and all the

`tcontained folders under it. If the server is already listed in the

`treplica list for a particular folder, nothing is changed for that folder.

SYNTAX:

`tAddReplicaToPFRecursive.ps1

`t`t[-Server ]

`t`t[-TopPublicFolder ]

`t`t[-ServerToAdd ]

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-ServerToAdd (required)

`t`tThe server identity to add to the replica list. Must be a server with a

`t`tpublic folder database.

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

C:PS> .AddReplicaToPFRecursive.ps1 -TopPublicFolder "Folder" -ServerToAdd "MyEx2003Server"

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

C:PS> .AddReplicaToPFRecursive.ps1 -Server "MyEx2007Server" -TopPublicFolder "Folder" -ServerToAdd "MyEx2003Server"

REMARKS:

`tReplica lists are updated quickly, but data replication can take a

`tsubstantial amount of time. The server being added will not show

`tcontent for some time.

RELATED LINKS:

`tAddReplicaToPFRecursive.ps1

`tMoveAllReplicas.ps1

`tRemoveReplicaFromPFRecursive.ps1

`tReplaceReplicaOnPFRecursive.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; }

$db = Get-PublicFolderDatabase -Server $ServerToAdd -ErrorAction Stop

if ($server)

{

$getpfcmd = "Get-PublicFolder -Server $Server -identity ""$TopPublicFolder"" -Recurse -ResultSize Unlimited"

}

else

{

$getpfcmd = "Get-PublicFolder -Identity ""$TopPublicFolder"" -Recurse -ResultSize Unlimited"

}

# These folders are not supposed to have any replica list,

# and attempts to change the replica list on any of them

# will result in an error. We'll just skip over these in the

# loop and avoid any unpleasantries.

$ExcludedFolders = new-object System.Collections.ArrayList

[void]$ExcludedFolders.Add("")

[void]$ExcludedFolders.Add("NON_IPM_SUBTREE")

[void]$ExcludedFolders.Add("NON_IPM_SUBTREESCHEDULE+ FREE BUSY")

[void]$ExcludedFolders.Add("NON_IPM_SUBTREEOFFLINE ADDRESS BOOK")

[void]$ExcludedFolders.Add("NON_IPM_SUBTREEEFORMS REGISTRY")

# 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

if (!$ExcludedFolders.Contains($_.Identity.ToString())) {

if (!$_.Replicas.Contains($db.Identity)) {

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

}

}

}

$pfsToChange | foreach {

$pf = Get-publicfolder $_ -Server $OriginatingServer

$pf.Replicas += $db.Identity

Set-PublicFolder -Server $OriginatingServer -Identity $_ -Replicas $pf.Replicas

}

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23700676/viewspace-1052327/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23700676/viewspace-1052327/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值