簡體   English   中英

我可以在 PowerShell 腳本中運行任務嗎?

[英]Can I run a task within a PowerShell script?

我是 Ansible 劇本的新手,我檢查了一堆不同的文檔但沒有成功。 所以這就是我想做的。 我的公司希望我使用 PowerShell 在 winRM 偵聽器中檢查某些字段是否存在,如果不存在,他們希望我讓它們存在,如果存在,他們希望我跳過劇本的那部分。

- name:  Windows test
  hosts: all
  gather_facts: true
  tasks:
    - name: Run basic PowerShell script
      ansible.windows.win_powershell:
        script: |
          $winRM = Get-WSManInstance -ResourceURI winrm/config/listener -SelectorSet @{Address="*";Transport="https"}
          $winRMPort = $winRM.Port
          $winRMTransport = $winRM.Transport
          $winRMThumbprint = $winRM.CertificateThumbprint
          if($winRMPort -ne $null){
            #task goes in here
          }
          else{
            #task goes in here
          }

我的問題是我可以在 if 語句中放置一個任務來告訴 Ansible 運行該任務嗎? 如果現在我不確定我會怎么做 go 。 我下面的代碼還沒有 if 語句的完整邏輯,但我只是想在 go 進一步使用它之前進行測試。 我已經嘗試嵌入它,但返回時出現錯誤,所以我認為我要么沒有做對,要么根本無法完成。 任何幫助表示贊賞。 謝謝你。

您不能在 powershell 腳本中運行/執行 ansible 任務/模塊。 但是您可以將任務轉換為 powershell 命令/腳本並在 powershell 腳本而不是 ansible 任務/模塊中運行它。

由於您使用的是 win_shell,因此它全部是 PowerShell 而不是 Ansible。您可以使用 PS1 邏輯檢查 WinRM 端口上的條件,然后執行該條件。

此外,Ansible 是冪等的,因此如果 state 存在,它將默認跳過條件為“存在”的代碼。

有關詳細信息,請參閱https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_powershell_module.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM