0

Powershell を使用して交換サーバーに接続し、キューからメッセージを削除することになっている Python コードがあります。(私はPowershellが初めてです)

これもこれにつながったことがわかりまし。これは基本的に私がすべきだと言っています:

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に正しく渡していると思いますが、何か間違っていると思います。

4

1 に答える 1

0

remove-message コマンドレットは使用しませんでした。指定したコマンドが期待どおりに機能すると仮定します。次のことを行う必要があります。

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 を宣言しparam($match,$servername)てからスクリプトで使用します。

私は Python にあまり詳しくないので、Python で呼び出す方法についてこれ以上の情報を提供することはできません。

于 2013-07-01T03:04:10.517 に答える