Powershell连接到Exchange服务器并从队列中删除消息

时间:2013-05-29 07:27:25

标签: python powershell exchange-server exchange-server-2010

我有Python代码,应该使用Powershell连接到Exchange服务器并从队列中删除消息。 (我是Powershell的新手)

我发现this也导致this。这基本上说我应该这样做:

Remove-Message -Server SERVERNAME -Filter {FromAddress -like '*MATCH*'} -WithNDR $false

代码会给出SERVERNAMEMATCH ...我的问题是我应该如何在Powershell中运行它?所以我这样做了:

powershell -NoExit -Command "COMMAND"

上面的命令COMMAND。我想用子进程运行它。当我手动测试命令时,我收到此错误:

The term 'Remove-Message' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:15
+ Remove-Message <<<< -Server SERVERNAME -Filter {FromAddress -like '*MATCH*'} -WithNDR $false
    + CategoryInfo : ObjectNotFound: (Remove-Message:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

所以我认为我做错了,但我认为我正确地将参数传递给Powershell。

1 个答案:

答案 0 :(得分:0)

我没有尝试使用remove-message cmdlet。假设您提供的命令可以按预期工作。你应该做以下事情,

1)编写脚本以包含命令,包括连接到交换,并删除消息

    if ((gcm Remove-Message -ErrorAction Ignore) -eq $null)
    {
      $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$($env:COMPUTERNAME).$($env:USERDNSDOMAIN)/Powershell?serializationLevel=Full;ExchClientVer=14.2.247.5" -Authentication kerberos
      Import-Module (Import-PSSession $session) -global
    }
    Remove-Message -Server SERVERNAME -Filter {FromAddress -like '*MATCH*'} -WithNDR $false

请对-ConnectionUri进行适当的更改,因为我只是展示如何使用完全合格的域名连接到本地。

2)使用以下代码调用此脚本,不要使用-NoExit,除非在删除完成后不要继续使用powershell控制台。

powershell -command ". 'PS_FILE_PATH'"

3)如果您需要将参数传递到脚本中,可以将它们组合到-command ". 'script.ps1' arg1 arg2"中。并在$args[0]的脚本中使用它们,或者先用param($match,$servername)声明参数,然后在脚本中使用。

我对Python并不熟悉,所以我无法提供有关如何使用python调用的更多信息。