web-dev-qa-db-ja.com

Powershellリモートセッションを適切に使用する

Ansibleを使用してリモートサーバーにメールボックスを作成しようとしています。テストのために、実際にメールボックスを作成するのではなく、「get-mailbox」を使用して「メールボックスのリストを取得する」ことのみを試みます。

私はたくさんのコマンドの組み合わせを試しましたが、Powershellがリモート実行を処理する方法に関しては、すべて同じ問題になると思います。

問題は、「メールボックスを取得する」ために、Powershellセッションで特定の「コマンドレット」をロードする必要があることです。

これは私の最後の試みで、接続にwinrmではなく「psrp」プラグインを使用します。私はこの考えにコミットしていません。これは、これまでの私の最近の試みを反映しているだけです。

- name: prueba psrp
  hosts: servidor_exchange

  tasks:
    - win_Shell: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -version 2.0 -NonInteractive -command ". 'C:\Program Files\Microsoft\ExchangeServer\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto ; get-mailbox"
  connection: psrp
  register: variable

- debug: 
    msg: "{{ variable }}"

エラーメッセージは冗長すぎて質問の説明に含めることができないため、代わりにここ https://Pastebin.com/4E0vRmpX で確認できます。

これは、pssessionを手動で構成しようとする別のアプローチです。

- name: prueba psrp
  hosts: servidor_exchange

  tasks:
    - win_Shell: |
        $username = "[email protected]"
        $password = ConvertTo-SecureString "Redhat01." -AsPlainText -Force
        $psCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $password)
        $sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
        Import-Module C:\PROGRA~1\Microsoft\EXCHAN~1\V14\Bin\RemoteExchange.ps1
        Import-Module C:\PROGRA~1\Microsoft\EXCHAN~1\V14\Bin\ConnectFunctions.ps1
        Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
        $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ansible-ex/powershell/ -Credential $psCred -Authentication Kerberos -AllowRedirection -SessionOption $sessionOption
#        Connect-ExchangeServer -auto
#        Get-Mailbox
      register: variable

    - debug: 
        msg: "{{ variable }}"

ほとんどの場合、私が表示できない、またはansible Hostからのログ(-vvvv)が不可能なユーザー入力を待機しているため、エラーが発生することはありません。

主な問題は、モジュール/スナップインをロードし、ansibleを介してリモートのPowerShellコマンドレットを実行する方法だと思います。この場合、Exchangeメールボックスの作成に適用されますが、リモート実行の同じ構造が他のPowershellスナップイン/モジュールを使用して機能することを期待しています。

ありがとうございました!

1
pup_seba

あなたの最善の策は、Windowsリモート管理(WinRM)のAnsibleガイドの「制限」セクションに記載されているオプションのいくつかを確認することです: https://docs.ansible.com/ansible/latest/user_guide/windows_winrm .html#limitations

具体的には:

ほとんどの認証タイプでは資格情報が委任されないため、ネットワークリソースにアクセスしたり、特定のプログラムをインストールしたりすると、認証エラーが発生します。

そして回避策:

セットする ansible_winrm_transport to credsspまたはkerberos(with ansible_winrm_kerberos_delegation=true)ダブルホップの問題を回避してネットワークリソースにアクセスする

1
Semicolon