Exchange Powershell - 如何从脚本内部按计划运行Exchange 2010命令?

时间:2014-04-09 08:26:48

标签: powershell exchange-server-2010

我正在编写一个脚本,通过shedule删除重定向邮件。 这里http://www.experts-exchange.com/Programming/Languages/Scripting/Powershell/Q_28316932.html描述了导入Exchange的功能。

脚本:

$t = New-JobTrigger –Once –At "08/04/2014 13:58"

$del_redir={
param ([string]$alias)
powershell.exe $ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://myexchsrv.mycompany.local/PowerShell ; Import-PSSession $ExchangeSession ; Set-Mailbox -Identity $alias -ForwardingAddress $null -DeliverToMailboxAndForward $false
}
Register-ScheduledJob -Name Start -ScriptBlock $del_redir -ArgumentList ("usernamealias") -Trigger $t

Separetly线路工作。

Set-Mailbox -Identity "usernamealias" -ForwardingAddress $null

工作得很好。 变化

Set-Mailbox -Identity $alias -ForwardingAddress $null 

$t = "d:\scripts\" + $alias + ".txt" #$alias = "usernamealias"
New-Item $t -type file

也工作(测试输入别名)

$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://myexchsrv.mycompany.local/PowerShell
Import-PSSession $ExchangeSession 

也可以工作(导入Exchange功能)

Windows PowerShell以管理员身份运行

所有这些都不起作用。我错在哪里?

2 个答案:

答案 0 :(得分:0)

我看到一个可能的问题和另一个可能的问题。

首先:

$t = New-JobTrigger –Once –At "08/04/2014 13:58"

然后:

$t = "d:\scripts\" + $alias + ".txt" #$alias = "usernamealias"

看来你刚刚摧毁了你的触发器。

另一个可能的问题是你的scriptblock参数的参数似乎是错误的(不知道脚本块是什么样子就无法分辨),而且-argumentlist参数不是命令中的最后一个参数。

Register-ScheduledJob上的帮助并没有明确说明,但是其他带有scripblock参数并允许您指定参数列表的cmdlet要求参数列表是最后一个参数,后面的所有内容都是参数到scriptblock。这样,解析器就不会将参数与scriptblock混淆,可能是cmdlet的参数和参数。我怀疑Regiester-ScheduledJob也是如此,-Trigger参数需要在-Scriptblock参数之前。

答案 1 :(得分:0)

工作脚本:

$t = New-JobTrigger –Once –At "10/04/2014 9:30"
$cred = Get-Credential mydomain\administrator
$oo = New-ScheduledJobOption -RunElevated
$del_redir={
param ([string]$alias)
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Set-Mailbox -Identity $alias -ForwardingAddress `$null -DeliverToMailboxAndForward 0"
}
Register-ScheduledJob -Name Start -ScriptBlock $del_redir -ArgumentList ("usernamealias") -Trigger $t -Credential $cred -ScheduledJobOption $oo

rem `$ null; $ oo = New-ScheduledJobOption -RunElevated