0

Microsoft Exchange Server のメールボックス数を確認したい。このコマンドは、標準の cmd.exe で正常に機能します。

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto ; Get-Mailbox | Measure-Object"

出力は

...
Count    : 3
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

次に、「-ExecutionPolicy RemoteSigned」を使用して Python でコーディングします。

cmd = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
 -ExecutionPolicy RemoteSigned
 -command \". 'C:\\Program Files\\Microsoft\\Exchange Server\\V14\\bin\\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Get-Mailbox | Measure-Object\""
os.system(cmd)

RemoteExchange.ps1 ファイルの読み込みに関する多くのエラーがあります。

Get-ItemProperty : Cannot find path 'HKLM:\SOFTWARE\Microsoft\ExchangeServer\v14\Setup' because it does not exist.
At C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1:46 char:34
+ $global:exbin = (get-itemproperty <<<<  HKLM:\SOFTWARE\Microsoft\ExchangeServer\v14\Setup).MsiInstallPath + "bin\"
    + CategoryInfo          : ObjectNotFound: (HKLM:\SOFTWARE\...erver\v14\Setup:String) [Get-ItemProperty], ItemNotFo
   undException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand

...

The Exchange types file wasn't loaded because not all of the required files could be found.
Update-TypeData : Cannot find path 'C:\Users\administrator.SCCM01\bin\Exchange.partial.Types.ps1xml' because it does no
t exist.
At C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1:104 char:16
+ Update-TypeData <<<<  -PrependPath $partialTypeFile
    + CategoryInfo          : InvalidOperation: (bin\Exchange.partial.Types.ps1xml:String) [Update-TypeData], ItemNotF
   oundException
    + FullyQualifiedErrorId : TypesPrependPathException,Microsoft.PowerShell.Commands.UpdateTypeDataCommand

Exchange Management Shell のウェルカム画面は表示されますが、RemoteExchange.ps1 の読み込みに失敗し、"Get-Mailbox" コマンドがまったく機能しません。

何か重要なことを見逃していたに違いないと思います。どうすればこの問題を解決できますか? 助けてください。

編集-ExecutionPolicy RemoteSigned: Python スクリプトを追加する必要があるのはなぜですか? そうしないと、別のエラーが発生します。

File C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.

このスレッドを参照してRemoteSignedくださいUnrestricted。どちらも cmd.exe では機能しますが、Python スクリプトでは機能しません。

4

1 に答える 1

1

少し異なる状況でまったく同じ問題に遭遇しましたが、エラーメッセージは同じでした。Puppet および Powershell スクリプトを介して MS Exchange をプロビジョニングしようとしていました。サイレントに実行されるファイル システム リダイレクター (Windows)の副作用に悩まされています。どうやら 32 ビット プログラムは 64 ビット レジストリ キーにアクセスできず、ファイル システム リダイレクタは知らないうちに変更を加えてしまうようです。

これが私の状況のエレガントな解決策であることがわかりました:

32 ビット アプリケーションは、%windir%\System32 を %windir%\Sysnative に置き換えることにより、ネイティブ システム ディレクトリにアクセスできます。WOW64 は、ファイル システムがアクセスをリダイレクトしないことを示すために使用される特別なエイリアスとして Sysnative を認識します。このメカニズムは柔軟で使いやすいため、ファイル システムのリダイレクトをバイパスするために推奨されるメカニズムです。Sysnative エイリアスは実際のディレクトリではなく仮想ディレクトリであるため、64 ビット アプリケーションでは使用できないことに注意してください。

于 2012-12-19T18:43:45.300 に答える