我有Python代码,应该使用Powershell连接到Exchange服务器并从队列中删除消息。 (我是Powershell的新手)
Remove-Message -Server SERVERNAME -Filter {FromAddress -like '*MATCH*'} -WithNDR $false
代码会给出SERVERNAME
和MATCH
...我的问题是我应该如何在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。
答案 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调用的更多信息。