en-US/Brownserve.PSTools-help.xml

<?xml version="1.0" encoding="utf-8"?>
<helpItems schema="maml" xmlns="http://msh">
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-ChangelogEntry</command:name>
      <command:verb>Add</command:verb>
      <command:noun>ChangelogEntry</command:noun>
      <maml:description>
        <maml:para>Inserts a new changelog entry into a given changelog file</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Inserts a new changelog entry into a given changelog file</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-ChangelogEntry</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>ChangelogPath</maml:name>
          <maml:description>
            <maml:para>The path to the changelog file</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>NewContent</maml:name>
          <maml:description>
            <maml:para>The content to be inserted into the changelog</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>ChangelogPath</maml:name>
        <maml:description>
          <maml:para>The path to the changelog file</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>NewContent</maml:name>
        <maml:description>
          <maml:para>The content to be inserted into the changelog</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Management.Automation.PSObject</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>You can pipe new content directly into this cmdlet from Read-Changelog for ease of use</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>--------------- EXAMPLE 1: Add a changelog entry ---------------</maml:title>
        <dev:code>Add-ChangelogEntry -ChangelogPath C:\CHANGELOG.md -NewContent "This is a test"</dev:code>
        <dev:remarks>
          <maml:para>Would enter the value "This is a test" at the top of the changelog located at `C:\CHANGELOG.md`</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------- EXAMPLE 2: Add a changelog entry from pipeline --------</maml:title>
        <dev:code>Read-Changelog -ChangelogPath C:\CHANGELOG.md | Add-ChangelogEntry -NewContent "This is a test"</dev:code>
        <dev:remarks>
          <maml:para>Would enter the value "This is a test" at the top of the changelog located at `C:\CHANGELOG.md`</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-PullRequestComment</command:name>
      <command:verb>Add</command:verb>
      <command:noun>PullRequestComment</command:noun>
      <maml:description>
        <maml:para>Adds a comment to a given pull request</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Adds a comment to a given pull request</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-PullRequestComment</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>PullRequestID</maml:name>
          <maml:description>
            <maml:para>The ID of the Pull Request</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>PullRequestComment</maml:name>
          <maml:description>
            <maml:para>The comment to be added to the PR</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="GitHubOrganisation, GitHubOrganization">
          <maml:name>GitHubOrg</maml:name>
          <maml:description>
            <maml:para>The GitHub org/user that owns the repository you wish to submit the comment against.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>GitHubToken</maml:name>
          <maml:description>
            <maml:para>The GitHub PAT that has permissions to add comments to PR's</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>RepoName</maml:name>
          <maml:description>
            <maml:para>The name of the repo</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="GitHubOrganisation, GitHubOrganization">
        <maml:name>GitHubOrg</maml:name>
        <maml:description>
          <maml:para>The GitHub org/user that owns the repository you wish to submit the comment against.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>GitHubToken</maml:name>
        <maml:description>
          <maml:para>The GitHub PAT that has permissions to add comments to PR's</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>PullRequestComment</maml:name>
        <maml:description>
          <maml:para>The comment to be added to the PR</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>PullRequestID</maml:name>
        <maml:description>
          <maml:para>The ID of the Pull Request</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>RepoName</maml:name>
        <maml:description>
          <maml:para>The name of the repo</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Add-PullRequestComment `
    -GitHubUsername 'a_user' `
    -GitHubPAT 'abc-1234' `
    -GitHubOrganization 'acme' `
    -RepoName 'myRepo' `
    -PullRequestID '1122' `
    -PullRequestComment 'Hello, world!'</dev:code>
        <dev:remarks>
          <maml:para>This would add the comment 'Hello, world!' to pull request `1122` on the repo 'myRepo' belonging to the user/org 'acme'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Format-TerraformResourceName</command:name>
      <command:verb>Format</command:verb>
      <command:noun>TerraformResourceName</command:noun>
      <maml:description>
        <maml:para>Strips out illegal characters from Terraform resource names</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Strips out illegal characters from Terraform resource names</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Format-TerraformResourceName</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>ResourceName</maml:name>
          <maml:description>
            <maml:para>The resource name to be formatted</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>ValidCharacters</maml:name>
          <maml:description>
            <maml:para>The characters that are valid (takes the form of a RegEx pattern)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>ResourceName</maml:name>
        <maml:description>
          <maml:para>The resource name to be formatted</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>ValidCharacters</maml:name>
        <maml:description>
          <maml:para>The characters that are valid (takes the form of a RegEx pattern)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------ EXAMPLE 1: String containing non-legal characters ------</maml:title>
        <dev:code>Format-ResourceName -ResourceName 'Illegal%%Resource_name'</dev:code>
        <dev:remarks>
          <maml:para>This would return 'IllegalResource_name</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- EXAMPLE 2: String starting with a digit -----------</maml:title>
        <dev:code>Format-ResourceName -ResourceName '1llegal_Resource_name'</dev:code>
        <dev:remarks>
          <maml:para>This would return 'N1llegal_Resource_name'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-GitHubRelease</command:name>
      <command:verb>Get</command:verb>
      <command:noun>GitHubRelease</command:noun>
      <maml:description>
        <maml:para>Gets a list of releases from a given GitHub repo</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets a list of releases from a given GitHub repo</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-GitHubRelease</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>RepoName</maml:name>
          <maml:description>
            <maml:para>The GitHub repo to create the release against</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="GitHubOrganisation, GitHubOrganization">
          <maml:name>GitHubOrg</maml:name>
          <maml:description>
            <maml:para>The GitHub org/user that owns the repository</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>GitHubToken</maml:name>
          <maml:description>
            <maml:para>The PAT to access the repo</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="GitHubOrganisation, GitHubOrganization">
        <maml:name>GitHubOrg</maml:name>
        <maml:description>
          <maml:para>The GitHub org/user that owns the repository</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>GitHubToken</maml:name>
        <maml:description>
          <maml:para>The PAT to access the repo</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>RepoName</maml:name>
        <maml:description>
          <maml:para>The GitHub repo to create the release against</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-GitHubRelease `
    -RepoName "MyRepo" `
    -GitHubOrg "Acme" `
    -GitHubToken "my-token"</dev:code>
        <dev:remarks>
          <maml:para>Would get all releases from the `Acme/MyRepo` repository</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-GitHubTags</command:name>
      <command:verb>Get</command:verb>
      <command:noun>GitHubTags</command:noun>
      <maml:description>
        <maml:para>Gets a list of tags for a given GitHub repository</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets a list of tags for a given GitHub repository</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-GitHubTags</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>RepoName</maml:name>
          <maml:description>
            <maml:para>The name of the repo to query</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="GitHubOrganisation, GitHubOrganization">
          <maml:name>GitHubOrg</maml:name>
          <maml:description>
            <maml:para>The organisation/owner that houses the repository you wish to query</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>GitHubToken</maml:name>
          <maml:description>
            <maml:para>The token with the relevant permissions to access the repository</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="GitHubOrganisation, GitHubOrganization">
        <maml:name>GitHubOrg</maml:name>
        <maml:description>
          <maml:para>The organisation/owner that houses the repository you wish to query</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>GitHubToken</maml:name>
        <maml:description>
          <maml:para>The token with the relevant permissions to access the repository</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>RepoName</maml:name>
        <maml:description>
          <maml:para>The name of the repo to query</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Get-GitHubTags -GitHubOrg 'myOrg' -GitHubToke $GitHubToken -RepoName 'myRepo'</dev:code>
        <dev:remarks>
          <maml:para>This would fetch all the tags for the repository "myRepo" which lives in the GitHubOrg "myOrg"</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-OpenPullRequests</command:name>
      <command:verb>Get</command:verb>
      <command:noun>OpenPullRequests</command:noun>
      <maml:description>
        <maml:para>Gets the open Pull requests for a given repository</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Gets the open Pull requests for a given repository</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-OpenPullRequests</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>RepoName</maml:name>
          <maml:description>
            <maml:para>The repo name to check for PR's</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="GitHubOrganisation, GitHubOrganization">
          <maml:name>GitHubOrg</maml:name>
          <maml:description>
            <maml:para>The GitHub org/user that owns the repository</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>GitHubToken</maml:name>
          <maml:description>
            <maml:para>The GitHub PAT</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="GitHubOrganisation, GitHubOrganization">
        <maml:name>GitHubOrg</maml:name>
        <maml:description>
          <maml:para>The GitHub org/user that owns the repository</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>GitHubToken</maml:name>
        <maml:description>
          <maml:para>The GitHub PAT</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>RepoName</maml:name>
        <maml:description>
          <maml:para>The repo name to check for PR's</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-OpenPullRequests
    -GitHubUsername 'a_user' `
    -GitHubPAT 'abc-1234' `
    -GitHubOrganization 'acme' `
    -RepoName 'myRepo' `</dev:code>
        <dev:remarks>
          <maml:para>This would fetch a list of open pull requests for the repo 'myRepo' belonging to the org/user 'acme'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-Response</command:name>
      <command:verb>Get</command:verb>
      <command:noun>Response</command:noun>
      <maml:description>
        <maml:para>Prompts a user for a response.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Prompts a user for a response and returns an expected output, this is useful in interactive script where data needs to be given in the correct format.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-Response</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>Prompt</maml:name>
          <maml:description>
            <maml:para>The prompt to post on screen</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
          <maml:name>ResponseType</maml:name>
          <maml:description>
            <maml:para>The type of value to return</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">string</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">bool</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">array</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Mandatory</maml:name>
          <maml:description>
            <maml:para>Make the response mandatory (applies to string and arrays only)</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Mandatory</maml:name>
        <maml:description>
          <maml:para>Make the response mandatory (applies to string and arrays only)</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>Prompt</maml:name>
        <maml:description>
          <maml:para>The prompt to post on screen</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
        <maml:name>ResponseType</maml:name>
        <maml:description>
          <maml:para>The type of value to return</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>---------------------- EXAMPLE 1: Strings ----------------------</maml:title>
        <dev:code>Get-Response -Prompt "What is your name?" -ResponseType "string"</dev:code>
        <dev:remarks>
          <maml:para>This would display `What is your name?` on the screen, whatever the user enters will be returned as a string.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------------------- EXAMPLE 2: Booleans ---------------------</maml:title>
        <dev:code>Get-Response -Prompt "Do you like pineapple on pizza?" -ResponseType "bool"</dev:code>
        <dev:remarks>
          <maml:para>This would display `Do you like pineapple on pizza? [y]es/[n]o:` on the screen If the user enters 'yes' then $true will be returned, if they enter 'no' then $false will be returned</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---------------------- EXAMPLE 3: Arrays ----------------------</maml:title>
        <dev:code>Get-Response -Prompt "What do you like on your pizza?" -ResponseType "array" -Mandatory</dev:code>
        <dev:remarks>
          <maml:para>This would display "What do you like on your pizza? [if specifying more than one separate with a comma]" to the screen. The resulting comma separated list will be split into an array. This has been marked as mandatory so the user must provide input or they will be prompted until they do</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-Terraform</command:name>
      <command:verb>Get</command:verb>
      <command:noun>Terraform</command:noun>
      <maml:description>
        <maml:para>Downloads the given version of Terraform for your OS</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet downloads the specified version of Terraform to the a given directory.
This allows us to use different versions of Terraform across different repositories easily (though the cmdlet could be used to download Terraform to your system if desired).
This cmdlet should work across Windows, macOS and Linux.
When using this with a repository you can set the `$global:RepoTerraformVersion` variable in your `_init` script or similar to save having to pass the `-TerraformVersion` parameter in every build step.</maml:para>
      <maml:para>The command `terraform` is replaced by an alias to the downloaded binary and the `$env:TerraformPath` variable is set pointing to the downloaded version of Terraform, this only affects your current PowerShell session.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-Terraform</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>TerraformVersion</maml:name>
          <maml:description>
            <maml:para>The version of Terraform to download Defaults to `$global:TerraformVersion` but if that is not set then a default version of 1.0.8 is used</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Version</command:parameterValue>
          <dev:type>
            <maml:name>Version</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="path">
          <maml:name>DownloadPath</maml:name>
          <maml:description>
            <maml:para>The path to download the binary to</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="path">
        <maml:name>DownloadPath</maml:name>
        <maml:description>
          <maml:para>The path to download the binary to</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>TerraformVersion</maml:name>
        <maml:description>
          <maml:para>The version of Terraform to download Defaults to `$global:TerraformVersion` but if that is not set then a default version of 1.0.8 is used</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Version</command:parameterValue>
        <dev:type>
          <maml:name>Version</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>$env:TerraformPath will be set upon successful download/extraction and the command 'terraform' will be set to this downloaded version of terraform for this session.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>----------- EXAMPLE 1: Download the default version -----------</maml:title>
        <dev:code>Get-Terraform -DownloadPath 'C:\tools'</dev:code>
        <dev:remarks>
          <maml:para>Will download Terraform to C:\tools
An Alias for the `terraform` command would be created and the `$env:TerraformPath` variable would be set pointing to this version for your current PowerShell session.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------------- EXAMPLE 2: Pass in a version number -------------</maml:title>
        <dev:code>Get-Terraform -TerraformVersion '1.0.0' -DownloadPath 'C:\tools'</dev:code>
        <dev:remarks>
          <maml:para>Will download Terraform v1.0.0 to C:\tools
An Alias for the `terraform` command would be created and the `$env:TerraformPath` variable would be set pointing to this version for your current PowerShell session.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------- Example 3: Use the global variable --------------</maml:title>
        <dev:code>$global:RepoTerraformVersion = '0.14.7'
Get-Terraform -DownloadPath 'C:\tools'</dev:code>
        <dev:remarks>
          <maml:para>This would download Terraform v0.14.7 to C:\tools.
An Alias for the `terraform` command would be created and the `$env:TerraformPath` variable would be set pointing to this version for your current PowerShell session.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-TerraformResource</command:name>
      <command:verb>Get</command:verb>
      <command:noun>TerraformResource</command:noun>
      <maml:description>
        <maml:para>Searches for and returns a given Terraform resource block.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Searches a given directory or file for a terraform resource block matching the criteria specified.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-TerraformResource</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>ResourceType</maml:name>
          <maml:description>
            <maml:para>The resource type as defined in the Terraform modules documentation</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>ResourceName</maml:name>
          <maml:description>
            <maml:para>The resource name</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>TerraformConfigPath</maml:name>
          <maml:description>
            <maml:para>Specifies a path to look for the resource block in.
Can be a file or a directory.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>ResourceName</maml:name>
        <maml:description>
          <maml:para>The resource name</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>ResourceType</maml:name>
        <maml:description>
          <maml:para>The resource type as defined in the Terraform modules documentation</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>TerraformConfigPath</maml:name>
        <maml:description>
          <maml:para>Specifies a path to look for the resource block in.
Can be a file or a directory.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-TerraformResource `
    -ResourceType 'github_team' `
    -ResourceName 'dashboard' `</dev:code>
        <dev:remarks>
          <maml:para>This would search for the 'resource "github_team" "dashboard"' in the C:\terraform-github directory.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-Vault</command:name>
      <command:verb>Get</command:verb>
      <command:noun>Vault</command:noun>
      <maml:description>
        <maml:para>Downloads the given version of Vault for your OS</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet will download the specified version of Vault to the given directory.
An alias is created that replaces the path to the `vault` command and the environment variable `$env:VaultPath` is set to point to this downloaded version, this only affects your current PowerShell session.</maml:para>
      <maml:para>This allows us to lock vault to different versions across projects if we need to.</maml:para>
      <maml:para>You can set the environment variable `$global:RepoVaultVersion` for a given project to save having to specify the `-VaultVersion` parameter.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-Vault</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>VaultVersion</maml:name>
          <maml:description>
            <maml:para>The version of Vault to use
If the `$global:RepoVaultVersion` variable is set then it will default to this otherwise defaults to 1.8.2</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Version</command:parameterValue>
          <dev:type>
            <maml:name>Version</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="Path">
          <maml:name>DownloadPath</maml:name>
          <maml:description>
            <maml:para>The path to download the binary to</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="Path">
        <maml:name>DownloadPath</maml:name>
        <maml:description>
          <maml:para>The path to download the binary to</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>VaultVersion</maml:name>
        <maml:description>
          <maml:para>The version of Vault to use
If the `$global:RepoVaultVersion` variable is set then it will default to this otherwise defaults to 1.8.2</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Version</command:parameterValue>
        <dev:type>
          <maml:name>Version</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>$env:VaultPath will be set upon successful download/extraction of Vault and the command 'vault' will be set to the downloaded version of vault for this session.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------- EXAMPLE 1: Using the default version -------------</maml:title>
        <dev:code>Get-Vault -DownloadPath 'C:\Tools'</dev:code>
        <dev:remarks>
          <maml:para>Will download vault to C:\Tools</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------------- EXAMPLE 2: Using the parameters ---------------</maml:title>
        <dev:code>Get-Vault -VaultVersion '1.7.3' -DownloadPath 'C:\Tools'</dev:code>
        <dev:remarks>
          <maml:para>Will download v.1.7.3 to C:\Tools</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---------- Example 3: Using the environment variable ----------</maml:title>
        <dev:code>$global:RepoVaultVersion = '1.0.0'
Get-Vault -DownloadPath 'C:\Tools'</dev:code>
        <dev:remarks>
          <maml:para>This would download v1.0.0 of vault to the C:\Tools folder. The command `vault` would be pointed to this download and the `$env:VaultPath` variable would be set for the duration of your shell</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-VaultSecret</command:name>
      <command:verb>Get</command:verb>
      <command:noun>VaultSecret</command:noun>
      <maml:description>
        <maml:para>Returns a secret from a given vault path</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Returns a secret from a given vault path</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-VaultSecret</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Path">
          <maml:name>SecretPath</maml:name>
          <maml:description>
            <maml:para>The path to the secret</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="Path">
        <maml:name>SecretPath</maml:name>
        <maml:description>
          <maml:para>The path to the secret</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-VaultSecret -SecretPath credentials/live/github/token</dev:code>
        <dev:remarks>
          <maml:para>This would return the value of `credentials/live/github/token`</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Initialize-BrownserveBuildRepo</command:name>
      <command:verb>Initialize</command:verb>
      <command:noun>BrownserveBuildRepo</command:noun>
      <maml:description>
        <maml:para>Prepares a repo to be able to consume and use the Brownserve.PSTools PowerShell module</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet will assist in bootstrapping a repo for use with the Brownserve.PSTools PowerShellModule, it does so by:</maml:para>
      <maml:para>* Setting up our standard directories, gitignore's and VSCode settings</maml:para>
      <maml:para>* Configuring NuGet/paket</maml:para>
      <maml:para>* Creating and _init.ps1 script to initialize the repo during builds</maml:para>
      <maml:para></maml:para>
      <maml:para>This cmdlet is experimental and hasn't yet been extensively tested, use with care.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Initialize-BrownserveBuildRepo</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>RepoPath</maml:name>
          <maml:description>
            <maml:para>The path to the repository to initialize</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>CustomInitSteps</maml:name>
          <maml:description>
            <maml:para>If you know in advance any custom code you'd like to be included in the _init.ps1 script you can include it here.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ExcludeModuleLoader</maml:name>
          <maml:description>
            <maml:para>If specified this will remove the code block that looks for custom PowerShell modules from the _init.ps1 script</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ExcludeSnippets</maml:name>
          <maml:description>
            <maml:para>If specified will skip copying our default VSCode snippets</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ExcludeVSCodeSettings</maml:name>
          <maml:description>
            <maml:para>If specified will skip copying our default VSCode settings</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Force</maml:name>
          <maml:description>
            <maml:para>If set will forcefully overwrite existing data, only use this if instructed to do so.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>IncludeDevcontainer</maml:name>
          <maml:description>
            <maml:para>If specified will copy over a basic devcontainer</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>CustomInitSteps</maml:name>
        <maml:description>
          <maml:para>If you know in advance any custom code you'd like to be included in the _init.ps1 script you can include it here.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ExcludeModuleLoader</maml:name>
        <maml:description>
          <maml:para>If specified this will remove the code block that looks for custom PowerShell modules from the _init.ps1 script</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ExcludeSnippets</maml:name>
        <maml:description>
          <maml:para>If specified will skip copying our default VSCode snippets</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ExcludeVSCodeSettings</maml:name>
        <maml:description>
          <maml:para>If specified will skip copying our default VSCode settings</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Force</maml:name>
        <maml:description>
          <maml:para>If set will forcefully overwrite existing data, only use this if instructed to do so.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>IncludeDevcontainer</maml:name>
        <maml:description>
          <maml:para>If specified will copy over a basic devcontainer</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>RepoPath</maml:name>
        <maml:description>
          <maml:para>The path to the repository to initialize</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>PS C:\&gt; Initialize-BrownserveBuildRepo -RepoPath C:\myRepo</dev:code>
        <dev:remarks>
          <maml:para>This would prepare the repo at 'C:\myRepo' for use with Brownserve.BuildTools</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Install-ChocolateyPackage</command:name>
      <command:verb>Install</command:verb>
      <command:noun>ChocolateyPackage</command:noun>
      <maml:description>
        <maml:para>Helper cmdlet for installing Chocolatey packages programmatically</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet is intended to be used in automations to allow for easy installations of dependencies. It's primary use case is for cloud based build agents that may not necessarily have all the required tooling available by default, though it can also be used to bulk install chocolatey packages on your local machine if you wish. Given that Chocolatey is package manager for Windows this cmdlet is Windows Only.
[Compatible with: Windows]</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Install-ChocolateyPackage</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>PackageName</maml:name>
          <maml:description>
            <maml:para>The name of the chocolatey package to be installed</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>PackageVersion</maml:name>
          <maml:description>
            <maml:para>The version of the package to be installed, defaults to `any`</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Upgrade</maml:name>
          <maml:description>
            <maml:para>If set will upgrade the package to the latest available version, providing a specific version has not been provided already.
If used with pipeline input then this will upgrade all packages that are provided through the pipeline that do not have a specific version set.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>PackageName</maml:name>
        <maml:description>
          <maml:para>The name of the chocolatey package to be installed</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>PackageVersion</maml:name>
        <maml:description>
          <maml:para>The version of the package to be installed, defaults to `any`</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Upgrade</maml:name>
        <maml:description>
          <maml:para>If set will upgrade the package to the latest available version, providing a specific version has not been provided already.
If used with pipeline input then this will upgrade all packages that are provided through the pipeline that do not have a specific version set.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>ChocolateyPackage[]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------- Example 1: Install a given package --------------</maml:title>
        <dev:code>PS C:\&gt; Install-ChocolateyPackage -PackageName 'awscli'</dev:code>
        <dev:remarks>
          <maml:para>This would install the latest version of the `awscli` on the local system</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---- Example 2: Upgrade a package if it's already installed ----</maml:title>
        <dev:code>PS C:\&gt; Install-ChocolateyPackage -PackageName 'awscli' -Upgrade</dev:code>
        <dev:remarks>
          <maml:para>This would install the latest version of the `awscli` on the local system if it is not already installed, if it is installed but is not the latest version it will be updated</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------------- Example 3: Bulk install packages ---------------</maml:title>
        <dev:code>PS C:\&gt; @(
    [PSCustomObject]@{
        name = 'awscli'
        version = 'any'
    }],
    [PSCustomObject]@{
        Name = 'git'
        version = '1.0.0'
    }]
) | Install-ChocolateyPackages</dev:code>
        <dev:remarks>
          <maml:para>This would install the latest version of the `awscli` on the local system and version `1.0.0` of git if they do not already exist</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------------- Example 4: Passing in from a CSV ---------------</maml:title>
        <dev:code>PS C:\packages\&gt; Import-CSV 'choco_packages.csv' | Install-ChocolateyPackages</dev:code>
        <dev:remarks>
          <maml:para>Providing the csv file was structured correctly this would bulk install any packages from the CSV file.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-DownloadMethod</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>DownloadMethod</command:noun>
      <maml:description>
        <maml:para>Downloads a file using the best method available depending on operating system.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Downloads a file using the best method available depending on operating system. On Windows systems this will attempt to use BITSTransfer if this is available and running, otherwise WebRequest is used.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-DownloadMethod</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>DownloadURI</maml:name>
          <maml:description>
            <maml:para>The download URI</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
          <maml:name>OutFile</maml:name>
          <maml:description>
            <maml:para>The place to store the download</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>DownloadURI</maml:name>
        <maml:description>
          <maml:para>The download URI</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
        <maml:name>OutFile</maml:name>
        <maml:description>
          <maml:para>The place to store the download</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Invoke-DownloadMethod `
    -DownloadURI 'https://example.com/myfile.zip' `
    -OutFile 'C:\MyFile.zip'</dev:code>
        <dev:remarks>
          <maml:para>This would download the file at 'https://example.com/myfile.zip' to 'C:\MyFile.zip'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-NativeCommand</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>NativeCommand</command:noun>
      <maml:description>
        <maml:para>Invokes a native command while gracefully handling the output and error streams.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet will call a native process (e.g `ping`) and will allow for writing the commands output to host while also returning the output after the command completes successfully if desired.
This is useful when you want to monitor a commands output while also capturing it for processing later on.
If you only want the output of the command and not the stream output you can pass the `-SuppressOutput` parameter.
As many native commands can write verbose/logging information to stderr this cmdlet attempts to be clever about only returning truly terminating errors, it does so by inspecting the exit code and only raising an exception if the exit code is invalid.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-NativeCommand</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="PSPath">
          <maml:name>FilePath</maml:name>
          <maml:description>
            <maml:para>The path to the command to be run</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="Arguments">
          <maml:name>ArgumentList</maml:name>
          <maml:description>
            <maml:para>An optional list of arguments to be passed to the command</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>WorkingDirectory</maml:name>
          <maml:description>
            <maml:para>If set will set the working directory for the called command, defaults to the current directory.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>ExitCodes</maml:name>
          <maml:description>
            <maml:para>The exit codes expected from this command when it has been successful</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>Pass this parameter if you want the cmdlet to return a PowerShell object of the native commands output stream</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RedirectOutputPath</maml:name>
          <maml:description>
            <maml:para>The path to where the redirected output should be stored Defaults to the contents of the global variable 'RepoLogDirectory' if available If that isn't set then defaults to a temp directory.
 This is only used when `-SuppressOutput` is specified</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RedirectOutputPrefix</maml:name>
          <maml:description>
            <maml:para>The prefix to use on the redirected streams, defaults to the command run time</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RedirectOutputSuffix</maml:name>
          <maml:description>
            <maml:para>The suffix for the redirected streams (defaults to log)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SuppressOutput</maml:name>
          <maml:description>
            <maml:para>If specified will suppress command output</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="Arguments">
        <maml:name>ArgumentList</maml:name>
        <maml:description>
          <maml:para>An optional list of arguments to be passed to the command</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>ExitCodes</maml:name>
        <maml:description>
          <maml:para>The exit codes expected from this command when it has been successful</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="PSPath">
        <maml:name>FilePath</maml:name>
        <maml:description>
          <maml:para>The path to the command to be run</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>Pass this parameter if you want the cmdlet to return a PowerShell object of the native commands output stream</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RedirectOutputPath</maml:name>
        <maml:description>
          <maml:para>The path to where the redirected output should be stored Defaults to the contents of the global variable 'RepoLogDirectory' if available If that isn't set then defaults to a temp directory.
 This is only used when `-SuppressOutput` is specified</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RedirectOutputPrefix</maml:name>
        <maml:description>
          <maml:para>The prefix to use on the redirected streams, defaults to the command run time</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RedirectOutputSuffix</maml:name>
        <maml:description>
          <maml:para>The suffix for the redirected streams (defaults to log)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SuppressOutput</maml:name>
        <maml:description>
          <maml:para>If specified will suppress command output</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>WorkingDirectory</maml:name>
        <maml:description>
          <maml:para>If set will set the working directory for the called command, defaults to the current directory.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Array</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------------ Example 1: Standard usage ------------------</maml:title>
        <dev:code>$Ping = Invoke-NativeCommand `
    -FilePath 'ping' `
    -ArgumentList @('192.168.1.1') `
    -PassThru</dev:code>
        <dev:remarks>
          <maml:para>In this example the `ping` command would be run with the argument `192.168.1.1`, as the `PassThru` parameter has been provided the command's output would returned and stored in the `$Ping` variable as well as being streamed to host</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>---------------- Example 2: Suppressing output ----------------</maml:title>
        <dev:code>Invoke-NativeCommand `
    -FilePath 'ping' `
    -ArgumentList @('192.168.1.1') `
    -SuppressOutput</dev:code>
        <dev:remarks>
          <maml:para>In this example the `ping` command would be run with the argument `192.168.1.1`, as `-SuppressOutput` has been specified no output would be written to host and as `-PassThru` has not been provided no output would be returned effectively making this command silent.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-TerraformApply</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>TerraformApply</command:noun>
      <maml:description>
        <maml:para>Invokes 'terraform apply' with a given set of arguments</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Invokes 'terraform apply' with a given set of arguments. It can be run against a pre-existing plan or as a standalone pipeline, it is meant to be run from a CI/CD tool and as such offers no input.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-TerraformApply</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>TerraformConfigPath</maml:name>
          <maml:description>
            <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>PWD</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="TerraformPlanPath">
          <maml:name>PlanFilePath</maml:name>
          <maml:description>
            <maml:para>A Terraform plan output object to be imported and used</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Target</maml:name>
          <maml:description>
            <maml:para>A resource to target (useful in testing). Cannot be used when `PlanFilePath` is specified.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
          <maml:name>Parallelism</maml:name>
          <maml:description>
            <maml:para>Limit the number of concurrent operation as Terraform walks the graph.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>CompactWarnings</maml:name>
          <maml:description>
            <maml:para>Whether or not to compact warning messages</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>EnableColor</maml:name>
          <maml:description>
            <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tooling</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>TerraformPath</maml:name>
          <maml:description>
            <maml:para>The path to the Terraform binary</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>terraform</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>CompactWarnings</maml:name>
        <maml:description>
          <maml:para>Whether or not to compact warning messages</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>EnableColor</maml:name>
        <maml:description>
          <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tooling</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
        <maml:name>Parallelism</maml:name>
        <maml:description>
          <maml:para>Limit the number of concurrent operation as Terraform walks the graph.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="TerraformPlanPath">
        <maml:name>PlanFilePath</maml:name>
        <maml:description>
          <maml:para>A Terraform plan output object to be imported and used</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Target</maml:name>
        <maml:description>
          <maml:para>A resource to target (useful in testing). Cannot be used when `PlanFilePath` is specified.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>TerraformConfigPath</maml:name>
        <maml:description>
          <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>PWD</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>TerraformPath</maml:name>
        <maml:description>
          <maml:para>The path to the Terraform binary</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>terraform</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Boolean</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Int32</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Invoke-TerraformApply</dev:code>
        <dev:remarks>
          <maml:para>This would run a terraform apply against the current directory</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-TerraformInit</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>TerraformInit</command:noun>
      <maml:description>
        <maml:para>Performs a `terraform init`</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Performs a `terraform init` using Start-SilentProcess to suppress the output</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-TerraformInit</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>TerraformConfigPath</maml:name>
          <maml:description>
            <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>PWD</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>EnableColor</maml:name>
          <maml:description>
            <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tools</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>TerraformPath</maml:name>
          <maml:description>
            <maml:para>The Path to the Terraform binary</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>terraform</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>EnableColor</maml:name>
        <maml:description>
          <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tools</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>TerraformConfigPath</maml:name>
        <maml:description>
          <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>PWD</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>TerraformPath</maml:name>
        <maml:description>
          <maml:para>The Path to the Terraform binary</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>terraform</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Boolean</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Invoke-TerraformInit</dev:code>
        <dev:remarks>
          <maml:para>Would perform a 'terraform-init' in the current directory</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-TerraformPlan</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>TerraformPlan</command:noun>
      <maml:description>
        <maml:para>Invokes a Terraform plan with a selection of given parameters</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Invokes a Terraform plan with a selection of given parameters, this is designed for CI/CD deployments and is non-interactive.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-TerraformPlan</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>TerraformConfigPath</maml:name>
          <maml:description>
            <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>PWD</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
          <maml:name>OutputPath</maml:name>
          <maml:description>
            <maml:para>The path to store the output of the Terraform plan</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Target</maml:name>
          <maml:description>
            <maml:para>A resource to target (useful in testing)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>DetailedExitCodes</maml:name>
          <maml:description>
            <maml:para>Whether or not to use detailed exit codes (defaults to false)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>EnableColor</maml:name>
          <maml:description>
            <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tools</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Parallelism</maml:name>
          <maml:description>
            <maml:para>Limit the number of concurrent operation as Terraform walks the graph.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
          <dev:type>
            <maml:name>Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Refresh</maml:name>
          <maml:description>
            <maml:para>Whether or not to refresh resources</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>True</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>TerraformPath</maml:name>
          <maml:description>
            <maml:para>The Path to the Terraform binary</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>terraform</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>DetailedExitCodes</maml:name>
        <maml:description>
          <maml:para>Whether or not to use detailed exit codes (defaults to false)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>EnableColor</maml:name>
        <maml:description>
          <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tools</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="none">
        <maml:name>OutputPath</maml:name>
        <maml:description>
          <maml:para>The path to store the output of the Terraform plan</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Parallelism</maml:name>
        <maml:description>
          <maml:para>Limit the number of concurrent operation as Terraform walks the graph.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
        <dev:type>
          <maml:name>Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Refresh</maml:name>
        <maml:description>
          <maml:para>Whether or not to refresh resources</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>True</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Target</maml:name>
        <maml:description>
          <maml:para>A resource to target (useful in testing)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>TerraformConfigPath</maml:name>
        <maml:description>
          <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>PWD</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>TerraformPath</maml:name>
        <maml:description>
          <maml:para>The Path to the Terraform binary</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>terraform</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Boolean</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>----------- EXAMPLE 1: Specify the path to Terraform -----------</maml:title>
        <dev:code>Invoke-TerraformPlan -TerraformPath C:\Tools\Terraform.exe</dev:code>
        <dev:remarks>
          <maml:para>Will run a terraform plan against the current directory using C:\Tools\Terraform.exe</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------- EXAMPLE 2: Specify a plan output folder -----------</maml:title>
        <dev:code>Invoke-TerraformPlan -OutputPath C:\Tools\terraform.plan</dev:code>
        <dev:remarks>
          <maml:para>Will run a terraform plan against the current directory using whatever Terraform command is in your path and export the plan results to C:\Tools\terraform.plan</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-TerraformShow</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>TerraformShow</command:noun>
      <maml:description>
        <maml:para>Runs the `terraform show` command and converts the output into a PowerShell object.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Runs the `terraform show` command and converts the output into a PowerShell object. You can pass in the path to a Terraform plan output file or Terraform state file otherwise the command will just use the current state.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-TerraformShow</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>TerraformConfigPath</maml:name>
          <maml:description>
            <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="OutputPath, TerraformPlanPath, TerraformStatePath">
          <maml:name>InputFile</maml:name>
          <maml:description>
            <maml:para>An optional path to either a Terraform plan output file or Terraform state file, if none is provided the default state is used</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>TerraformPath</maml:name>
          <maml:description>
            <maml:para>The Path to the Terraform binary</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>terraform</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="OutputPath, TerraformPlanPath, TerraformStatePath">
        <maml:name>InputFile</maml:name>
        <maml:description>
          <maml:para>An optional path to either a Terraform plan output file or Terraform state file, if none is provided the default state is used</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>TerraformConfigPath</maml:name>
        <maml:description>
          <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>TerraformPath</maml:name>
        <maml:description>
          <maml:para>The Path to the Terraform binary</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>terraform</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------ EXAMPLE 1: Using the current directory ------------</maml:title>
        <dev:code>Invoke-TerraformShow</dev:code>
        <dev:remarks>
          <maml:para>This would run 'terraform show' against the PWD's current state and convert the data into a PowerShell object.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------------- EXAMPLE 2: Using a plan file -----------------</maml:title>
        <dev:code>Invoke-TerraformShow -InputFile 'C:\terraform-github\plan.output'</dev:code>
        <dev:remarks>
          <maml:para>This would run 'terraform show' against the saved plan at 'C:\terraform-github\plan.output' and convert the data into a PowerShell object.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-TerraformValidate</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>TerraformValidate</command:noun>
      <maml:description>
        <maml:para>Performs a 'terraform validate'</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Performs a 'terraform validate'</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-TerraformValidate</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>TerraformConfigPath</maml:name>
          <maml:description>
            <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>EnableColor</maml:name>
          <maml:description>
            <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tools</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
          <dev:type>
            <maml:name>Boolean</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>TerraformPath</maml:name>
          <maml:description>
            <maml:para>The Path to the Terraform binary</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>terraform</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>EnableColor</maml:name>
        <maml:description>
          <maml:para>Whether or not to enable color output, defaults to false so as not to break CI/CD tools</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Boolean</command:parameterValue>
        <dev:type>
          <maml:name>Boolean</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>TerraformConfigPath</maml:name>
        <maml:description>
          <maml:para>Path to the Terraform configuration files (defaults to current working directory)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>TerraformPath</maml:name>
        <maml:description>
          <maml:para>The Path to the Terraform binary</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>terraform</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Boolean</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Invoke-TerraformValidate</dev:code>
        <dev:remarks>
          <maml:para>Would validate the Terraform configuration in the present directory</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-GitHubRelease</command:name>
      <command:verb>New</command:verb>
      <command:noun>GitHubRelease</command:noun>
      <maml:description>
        <maml:para>Creates a release on GitHub</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a release on GitHub</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-GitHubRelease</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Name</maml:name>
          <maml:description>
            <maml:para>The name of the release</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>Tag</maml:name>
          <maml:description>
            <maml:para>The tag to use for the release, should not contain any whitespace.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Description</maml:name>
          <maml:description>
            <maml:para>The description for this release</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>RepoName</maml:name>
          <maml:description>
            <maml:para>The GitHub repo to create the release against</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="GitHubOrganisation, GitHubOrganization">
          <maml:name>GitHubOrg</maml:name>
          <maml:description>
            <maml:para>The GitHub org/user that owns the repository</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>GitHubToken</maml:name>
          <maml:description>
            <maml:para>The PAT to access the repo</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Prerelease</maml:name>
          <maml:description>
            <maml:para>Set if this is a prerelease</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>TargetCommit</maml:name>
          <maml:description>
            <maml:para>The target commitish to use (if any)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Description</maml:name>
        <maml:description>
          <maml:para>The description for this release</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="GitHubOrganisation, GitHubOrganization">
        <maml:name>GitHubOrg</maml:name>
        <maml:description>
          <maml:para>The GitHub org/user that owns the repository</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>GitHubToken</maml:name>
        <maml:description>
          <maml:para>The PAT to access the repo</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Name</maml:name>
        <maml:description>
          <maml:para>The name of the release</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Prerelease</maml:name>
        <maml:description>
          <maml:para>Set if this is a prerelease</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>RepoName</maml:name>
        <maml:description>
          <maml:para>The GitHub repo to create the release against</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>Tag</maml:name>
        <maml:description>
          <maml:para>The tag to use for the release, should not contain any whitespace.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>TargetCommit</maml:name>
        <maml:description>
          <maml:para>The target commitish to use (if any)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>New-GitHubRelease `
    -Name "Version 1.0.0" `
    -Tag "v1.0.0" `
    -Description "This is the first release" `
    -RepoName "MyRepo" `
    -GitHubOrg "Acme" `
    -GitHubToken "my-token" `</dev:code>
        <dev:remarks>
          <maml:para>This would create a release called "Version 1.0.0" with a tag of "v1.0.0"</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-NuGetPackageVersion</command:name>
      <command:verb>New</command:verb>
      <command:noun>NuGetPackageVersion</command:noun>
      <maml:description>
        <maml:para>Obtains a NuGet package version based on the build version number and branch name.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Obtains a NuGet package version based on a 3 or 4-digit build version number, the branch name and whether or not the branch is the default branch.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-NuGetPackageVersion</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>BranchName</maml:name>
          <maml:description>
            <maml:para>The name of the current branch, this is used to suffix non production releases (eg feature releases etc)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Prerelease</maml:name>
          <maml:description>
            <maml:para>If set this denotes that this version is a prerelease</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>Version</maml:name>
          <maml:description>
            <maml:para>A three or four digit version number of the form Major.Minor.Patch.Revision.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Version</command:parameterValue>
          <dev:type>
            <maml:name>Version</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>BranchName</maml:name>
        <maml:description>
          <maml:para>The name of the current branch, this is used to suffix non production releases (eg feature releases etc)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Prerelease</maml:name>
        <maml:description>
          <maml:para>If set this denotes that this version is a prerelease</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>Version</maml:name>
        <maml:description>
          <maml:para>A three or four digit version number of the form Major.Minor.Patch.Revision.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Version</command:parameterValue>
        <dev:type>
          <maml:name>Version</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.Version</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------------ EXAMPLE 1: 4 digit number ------------------</maml:title>
        <dev:code>New-NuGetPackageVersion -Version '1.2.3.4' -BranchName 'main'</dev:code>
        <dev:remarks>
          <maml:para>Would return '1.2.3.4'</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ EXAMPLE 2: 4 digit number with pre-release suffix ------</maml:title>
        <dev:code>New-NuGetPackageVersion -Version '1.2.3.4' -BranchName 'SomeBranch' -Prerelease</dev:code>
        <dev:remarks>
          <maml:para>Would return '1.2.3.4-SomeBranch'</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ EXAMPLE 3: 3 digit number with pre-release suffix ------</maml:title>
        <dev:code>New-NuGetPackageVersion -Version '1.2.3' -BranchName 'SomeBranch' -Prerelease</dev:code>
        <dev:remarks>
          <maml:para>Would return '1.2.3-SomeBranch.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-PullRequest</command:name>
      <command:verb>New</command:verb>
      <command:noun>PullRequest</command:noun>
      <maml:description>
        <maml:para>Creates a new pull request in GitHub</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a new pull request in GitHub</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-PullRequest</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>PRTitle</maml:name>
          <maml:description>
            <maml:para>The title of the pull request</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>PRBody</maml:name>
          <maml:description>
            <maml:para>The body of the pull request</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
          <maml:name>BaseBranch</maml:name>
          <maml:description>
            <maml:para>The branch you want to pull changes into</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="none">
          <maml:name>HeadBranch</maml:name>
          <maml:description>
            <maml:para>Your feature branch that you want to merge into your base branch</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="GitHubOrganisation, GitHubOrganization">
          <maml:name>GitHubOrg</maml:name>
          <maml:description>
            <maml:para>The GitHub org/user that owns the repository</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>GitHubToken</maml:name>
          <maml:description>
            <maml:para>The GitHub PAT</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>RepoName</maml:name>
          <maml:description>
            <maml:para>The name of the repo</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="3" aliases="none">
        <maml:name>BaseBranch</maml:name>
        <maml:description>
          <maml:para>The branch you want to pull changes into</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="GitHubOrganisation, GitHubOrganization">
        <maml:name>GitHubOrg</maml:name>
        <maml:description>
          <maml:para>The GitHub org/user that owns the repository</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>GitHubToken</maml:name>
        <maml:description>
          <maml:para>The GitHub PAT</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="4" aliases="none">
        <maml:name>HeadBranch</maml:name>
        <maml:description>
          <maml:para>Your feature branch that you want to merge into your base branch</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>PRBody</maml:name>
        <maml:description>
          <maml:para>The body of the pull request</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>PRTitle</maml:name>
        <maml:description>
          <maml:para>The title of the pull request</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>RepoName</maml:name>
        <maml:description>
          <maml:para>The name of the repo</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>New-PullRequest
    -GitHubUsername 'a_user' `
    -GitHubPAT 'abc-1234' `
    -GitHubOrganization 'acme' `
    -RepoName 'myRepo' `
    -BaseBranch 'main' `
    -HeadBranch 'my-feature-branch' `
    -PRTitle 'Add new feature' `
    -PRBody 'This adds my new feature to main'</dev:code>
        <dev:remarks>
          <maml:para>This would create a new PR against acme/myRepo with a goal to merge 'my-feature-branch' into 'main'. The PR would be titled 'Add new feature' and would contain a comment of 'This adds my new feature to main'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-TempDirectory</command:name>
      <command:verb>New</command:verb>
      <command:noun>TempDirectory</command:noun>
      <maml:description>
        <maml:para>Creates a new temporary directory with a random name in the systems temporary directory</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a new temporary directory with a random name in the systems temporary directory</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-TempDirectory</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>PS C:\&gt; New-TempDirectory</dev:code>
        <dev:remarks>
          <maml:para>Would create a new temp directory in C:\Windows\temp</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-TerraformResourceBlock</command:name>
      <command:verb>New</command:verb>
      <command:noun>TerraformResourceBlock</command:noun>
      <maml:description>
        <maml:para>Creates a Terraform resource block that can easily be inserted into Terraform code.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet is designed to make it easy to programmatically create Terraform resource blocks for insertion into Terraform configuration files.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-TerraformResourceBlock</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>ResourceType</maml:name>
          <maml:description>
            <maml:para>The type of resource to be created</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>ResourceName</maml:name>
          <maml:description>
            <maml:para>The name of the resource</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>ResourceArgs</maml:name>
          <maml:description>
            <maml:para>The arguments to be processed for this resource, these must be in the PSCustomObject format.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">PSObject</command:parameterValue>
          <dev:type>
            <maml:name>PSObject</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>ResourceArgs</maml:name>
        <maml:description>
          <maml:para>The arguments to be processed for this resource, these must be in the PSCustomObject format.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">PSObject</command:parameterValue>
        <dev:type>
          <maml:name>PSObject</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>ResourceName</maml:name>
        <maml:description>
          <maml:para>The name of the resource</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>ResourceType</maml:name>
        <maml:description>
          <maml:para>The type of resource to be created</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Management.Automation.PSObject</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>Currently this cmdlet does not format nested maps very well.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------------ Example 1: Simple resource ------------------</maml:title>
        <dev:code>PS C:\&gt; New-TerraformResourceBlock `
    -ResourceType 'github_repository' `
    -ResourceName 'Brownserve_PSTools' `
    -ResourceArgs [PSCustomObject]@{
        Name = "Brownserve.PSTools"
        Visibility = "Public"
        Description = "Useful tools"
    }
 
resource "github_repository" "Brownserve_PSTools" {
    Name = "Brownserve.PSTools"
    Visibility = "Public"
    Description = "Useful tools"
}</dev:code>
        <dev:remarks>
          <maml:para>This example shows a fairly simple GitHub repository resource.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>----------------- Example 2: Complex resources -----------------</maml:title>
        <dev:code>PS C:\&gt; New-TerraformResourceBlock `
    -ResourceType 'github_repository' `
    -ResourceName 'Brownserve_PSTools' `
    -ResourceArgs [PSCustomObject]@{
        Name = "Brownserve.PSTools"
        Visibility = "Public"
        Description = "Useful tools"
        Pages = @{
            Source = @{
                branch = "gh-pages"
                path = "/"
            }
            cname = "Foo.com"
        }
        topics = @('a','b')
        vulnerability_alerts = $true
    }
 
resource "github_repository" "Brownserve_PSTools" {
    Name = "Brownserve.PSTools"
    Visibility = "Public"
    Description = "Useful tools"
    Pages {
        Source = {
            path = "/"
            branch = "gh-pages"
        }
        cname = "Foo.com"
    }
    topics = ["a", "b"]
    vulnerability_alerts = true
}</dev:code>
        <dev:remarks>
          <maml:para>This more advanced example includes a nested hashtable, an array and a boolean value.</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------------- Example 3: Interpolation example ---------------</maml:title>
        <dev:code>PS C:\&gt; New-TerraformResourceBlock `
    -ResourceType 'github_branch_default' `
    -ResourceName 'Brownserve_PSTools-Main' `
    -ResourceArgs [PSCustomObject]@{
        repository = "github_repository.Brownserve_PSTools.name"
        branch = "var.default_branch"
    }
 
resource "github_repository" "Brownserve_PSTools" {
        repository = github_repository.Brownserve_PSTools.name
        branch = var.default_branch
}</dev:code>
        <dev:remarks>
          <maml:para>In this example we are using another resource as the reference for our repository and a variable for the branch. This cmdlet will automatically remove the quotes for these data sources to ensure they are compatible with Terraform.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Publish-TeamcityArtifact</command:name>
      <command:verb>Publish</command:verb>
      <command:noun>TeamcityArtifact</command:noun>
      <maml:description>
        <maml:para>Tells Teamcity to export a given file/folder as an artifact.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Tells Teamcity to export a given file/folder as an artifact. This is achieved by piping a message to StdOut to tell Teamcity where to grab the files and (optionally) where to store them</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Publish-TeamcityArtifact</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>ArtifactPath</maml:name>
          <maml:description>
            <maml:para>The artifact you wish to publish</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>TargetDirectory</maml:name>
          <maml:description>
            <maml:para>The target directory to publish the artifact to (optional)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>ArtifactPath</maml:name>
        <maml:description>
          <maml:para>The artifact you wish to publish</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>TargetDirectory</maml:name>
        <maml:description>
          <maml:para>The target directory to publish the artifact to (optional)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>See https://www.jetbrains.com/help/teamcity/configuring-general-settings.html#Artifact+Paths for more information</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>---------------- EXAMPLE 1: Publish an artifact ----------------</maml:title>
        <dev:code>Publish-TeamcityArtifact C:\Temp\MyFile.txt</dev:code>
        <dev:remarks>
          <maml:para>Will export C:\Temp\MyFile.txt as an artifact in Teamcity</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------- EXAMPLE 2: Publish an artifact to a directory --------</maml:title>
        <dev:code>Publish-TeamcityArtifact C:\Temp\MyFile.txt -TargetDirectory MyDir</dev:code>
        <dev:remarks>
          <maml:para>Will export C:\Temp\MyFile.txt as an artifact in Teamcity to the MyDir folder</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Read-Changelog</command:name>
      <command:verb>Read</command:verb>
      <command:noun>Changelog</command:noun>
      <maml:description>
        <maml:para>Retrieves version information and release notes from a CHANGELOG.md file.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Retrieves version information and release notes from a CHANGELOG.md file. This is done by searching for a regex match (defaults to semver 1.0.0) and extracting all information between the current release and the previous release</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Read-Changelog</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
          <maml:name>ChangelogPath</maml:name>
          <maml:description>
            <maml:para>The path of the release notes.md file to read from, wildcards are permitted.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>VersionPattern</maml:name>
          <maml:description>
            <maml:para>The regex to use for version matching. It should always contain a capture group named "version" as this is what the regex matcher will use to extract the version number</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>RepoURLPattern</maml:name>
          <maml:description>
            <maml:para>The regex pattern for matching the repo URL. It should always contain a capture group named "url" and this what the regex searched will use to extract your url</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName)" position="0" aliases="none">
        <maml:name>ChangelogPath</maml:name>
        <maml:description>
          <maml:para>The path of the release notes.md file to read from, wildcards are permitted.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>RepoURLPattern</maml:name>
        <maml:description>
          <maml:para>The regex pattern for matching the repo URL. It should always contain a capture group named "url" and this what the regex searched will use to extract your url</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>VersionPattern</maml:name>
        <maml:description>
          <maml:para>The regex to use for version matching. It should always contain a capture group named "version" as this is what the regex matcher will use to extract the version number</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>The resulting object from this cmdlet can be piped into Add-ChangelogEntry for convenience.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Read-Changelog -ChangelogPath C:\repos\MyRepo\CHANGELOG.md</dev:code>
        <dev:remarks>
          <maml:para>Returns version number and release notes from the changelog at 'C:\repos\MyRepo\CHANGELOG.md'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Send-BuildNotification</command:name>
      <command:verb>Send</command:verb>
      <command:noun>BuildNotification</command:noun>
      <maml:description>
        <maml:para>Sends a standard Brownserve build notification.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet will send a standard Brownserve build notification to our build channel.
This cmdlet is largely useless outside of Brownserve workflows</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Send-BuildNotification</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>BuildName</maml:name>
          <maml:description>
            <maml:para>The name of the build, by default the cmdlet will try to work this out by looking at the calling process but this is not always successful.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="Status">
          <maml:name>BuildStatus</maml:name>
          <maml:description>
            <maml:para>The status of the build.</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">Success</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Fail</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Information</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Warning</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Failure</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">Cancelled</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Webhook</maml:name>
          <maml:description>
            <maml:para>The webhook to send the notification to, at present only Slack webhooks are supported</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Message</maml:name>
          <maml:description>
            <maml:para>The message to be sent, if none is specified a generic one will be sent depending on the outcome of the build</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="Push, Title">
          <maml:name>PushMessage</maml:name>
          <maml:description>
            <maml:para>The title of the notification, if none is specified a generic one will be used depending on the outcome of the build</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>BuildName</maml:name>
        <maml:description>
          <maml:para>The name of the build, by default the cmdlet will try to work this out by looking at the calling process but this is not always successful.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="Status">
        <maml:name>BuildStatus</maml:name>
        <maml:description>
          <maml:para>The status of the build.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Message</maml:name>
        <maml:description>
          <maml:para>The message to be sent, if none is specified a generic one will be sent depending on the outcome of the build</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="Push, Title">
        <maml:name>PushMessage</maml:name>
        <maml:description>
          <maml:para>The title of the notification, if none is specified a generic one will be used depending on the outcome of the build</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Webhook</maml:name>
        <maml:description>
          <maml:para>The webhook to send the notification to, at present only Slack webhooks are supported</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>Send-BuildNotification `
    -Webhook $Webhook `
    -Status 'success'</dev:code>
        <dev:remarks>
          <maml:para>This would send a `success` message to the given webhook.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Send-SlackNotification</command:name>
      <command:verb>Send</command:verb>
      <command:noun>SlackNotification</command:noun>
      <maml:description>
        <maml:para>Sends a notification to a given Slack webhook</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet will send a message to a given Slack webhook, complex messages are formed using the legacy attachments (https://api.slack.com/reference/messaging/attachments) method (though limited support for block kit is supported via the `-UpperBlocks` parameter)</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Send-SlackNotification</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
          <maml:name>Message</maml:name>
          <maml:description>
            <maml:para>The message to be sent</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
          <maml:name>Webhook</maml:name>
          <maml:description>
            <maml:para>The webhook to post to</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Channel</maml:name>
          <maml:description>
            <maml:para>The ID of the channel you wish to post to (e.g. CC64VC954) you get get this from visiting Slack in a Browser and copying it from the URL.
This parameter is completely optional, if left blank it will use the default channel assigned to the webhook.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="color">
          <maml:name>Colour</maml:name>
          <maml:description>
            <maml:para>The colour (if any) to use for the notification, it will be displayed down the left hand side of the message.
The colour should be in hexadecimal format.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>Fields</maml:name>
          <maml:description>
            <maml:para>An optional array of attachment fields to add to the message (max of 3), see https://api.slack.com/reference/messaging/attachments#field_objects for more information.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>SubBlocks</maml:name>
          <maml:description>
            <maml:para>Any additional sub-blocks you would like displayed at the end of the message, these need to be formed as an array of hashtable's and are not validated in any way by the cmdlet.
If your message is over 3000 characters in length then SubBlocks cannot be used, please use the `-UpperBlocks` or `-Fields` parameters instead.
More info can be found at https://api.slack.com/reference/block-kit/blocks</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="Push">
          <maml:name>Title</maml:name>
          <maml:description>
            <maml:para>The title to display above the message (and in any pop-up/push/toast notifications), this is optional.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
          <maml:name>UpperBlocks</maml:name>
          <maml:description>
            <maml:para>Blocks that appear at the top of the message these need to be formed as an array of hashtable's and are not validated in any way by the cmdlet.
More info can be found at https://api.slack.com/reference/block-kit/blocks</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Channel</maml:name>
        <maml:description>
          <maml:para>The ID of the channel you wish to post to (e.g. CC64VC954) you get get this from visiting Slack in a Browser and copying it from the URL.
This parameter is completely optional, if left blank it will use the default channel assigned to the webhook.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="color">
        <maml:name>Colour</maml:name>
        <maml:description>
          <maml:para>The colour (if any) to use for the notification, it will be displayed down the left hand side of the message.
The colour should be in hexadecimal format.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>Fields</maml:name>
        <maml:description>
          <maml:para>An optional array of attachment fields to add to the message (max of 3), see https://api.slack.com/reference/messaging/attachments#field_objects for more information.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="1" aliases="none">
        <maml:name>Message</maml:name>
        <maml:description>
          <maml:para>The message to be sent</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>SubBlocks</maml:name>
        <maml:description>
          <maml:para>Any additional sub-blocks you would like displayed at the end of the message, these need to be formed as an array of hashtable's and are not validated in any way by the cmdlet.
If your message is over 3000 characters in length then SubBlocks cannot be used, please use the `-UpperBlocks` or `-Fields` parameters instead.
More info can be found at https://api.slack.com/reference/block-kit/blocks</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="Push">
        <maml:name>Title</maml:name>
        <maml:description>
          <maml:para>The title to display above the message (and in any pop-up/push/toast notifications), this is optional.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="named" aliases="none">
        <maml:name>UpperBlocks</maml:name>
        <maml:description>
          <maml:para>Blocks that appear at the top of the message these need to be formed as an array of hashtable's and are not validated in any way by the cmdlet.
More info can be found at https://api.slack.com/reference/block-kit/blocks</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName)" position="2" aliases="none">
        <maml:name>Webhook</maml:name>
        <maml:description>
          <maml:para>The webhook to post to</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>This cmdlet currently uses the "attachments" method which has now been deprecated by Slack.
We can't yet switch over to the full block-kit method as it's lacking colour support which we make heavy use of, once that becomes available we can make the switch though some logic tweaking will be required.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------------ Example 1: Simple message ------------------</maml:title>
        <dev:code>Send-SlackNotification -Message "This is a test" -Webhook "https://mywebhook"</dev:code>
        <dev:remarks>
          <maml:para>Would send the message "This is a test" to the given Slack webhook</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------------- Example 2: More complex message ---------------</maml:title>
        <dev:code>Send-SlackNotification -Message "This is a test" -Webhook "https://mywebhook" -Color "#FF0000" -Title "This is a title"</dev:code>
        <dev:remarks>
          <maml:para>This would send the message "This is a test" to the given Slack webhook, the left hand side of the message would feature a red bar and "This is a title" would be displayed in large text at the top of the message</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------------------ Example 3: Custom sections ------------------</maml:title>
        <dev:code>$SubBlocks = @(
    @{
        type = "section"
        fields = @(
            @{
                type = "mrkdwn"
                text = "Bottom Left?"
            },
            @{
                type = "mrkdwn"
                text = "Bottom Right?"
            }
        )
    }
)
Send-SlackNotification -Message "This is a test" -Webhook "https://mywebhook" -Color "#FF0000" -Title "This is a title" -SubBlocks $SubBlocks</dev:code>
        <dev:remarks>
          <maml:para>In this example we create a set of nested objects containing some additional fields that we wish to append to the message, these are then passed in to the cmdlet with the `-SubBlocks` parameter</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Slack messaging documentation</maml:linkText>
        <maml:uri>https://api.slack.com/messaging/composing/layouts</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-TeamcityBuildNumber</command:name>
      <command:verb>Set</command:verb>
      <command:noun>TeamcityBuildNumber</command:noun>
      <maml:description>
        <maml:para>Sets the build number in Teamcity.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Sets the build number in Teamcity by outputting a Teamcity service message to host. If the 'AppendCurrentBuildNumber' switch is passed the current build number is appended to the new build number</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-TeamcityBuildNumber</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>BuildNumber</maml:name>
          <maml:description>
            <maml:para>The build number to be set</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AppendCurrentBuildNumber</maml:name>
          <maml:description>
            <maml:para>If set this will append the current Teamcity build number</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AppendCurrentBuildNumber</maml:name>
        <maml:description>
          <maml:para>If set this will append the current Teamcity build number</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>BuildNumber</maml:name>
        <maml:description>
          <maml:para>The build number to be set</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Set-TeamcityBuildNumber -BuildNumber '1.0.0'</dev:code>
        <dev:remarks>
          <maml:para>This would output the message ##teamcity[buildNumber '1.0.0'] which would set the Teamcity build number to 1.0.0</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Set-TeamcityBuildNumber -BuildNumber '1.0.0' AppendCurrentBuildNumber</dev:code>
        <dev:remarks>
          <maml:para>Assuming the current Teamcity build number is 69 this would output the message ##teamcity[buildNumber '1.0.0_69'] Which would set the Teamcity build number to 1.0.0_69</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Set-TerraformLogLevel</command:name>
      <command:verb>Set</command:verb>
      <command:noun>TerraformLogLevel</command:noun>
      <maml:description>
        <maml:para>Provides an easy way to set the Terraform log level.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Provides an easy way to set the Terraform log level. Valid options are: * DEBUG * TRACE * INFO * WARN * none The default value is "none"</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Set-TerraformLogLevel</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>LogLevel</maml:name>
          <maml:description>
            <maml:para>The log level to set</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">DEBUG</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">TRACE</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">INFO</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">WARN</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">ERROR</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">none</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>none</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>LogLevel</maml:name>
        <maml:description>
          <maml:para>The log level to set</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>none</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------- EXAMPLE 1: Set Terraform's log level to DEBUG --------</maml:title>
        <dev:code>Set-TerraformLogLevel -LogLevel 'DEBUG'</dev:code>
        <dev:remarks>
          <maml:para>Would set the Terraform log level to DEBUG</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------- EXAMPLE 2: Set Terraform's log level to WARN ---------</maml:title>
        <dev:code>Set-TerraformLogLevel -LogLevel 'WARN'</dev:code>
        <dev:remarks>
          <maml:para>Would set the Terraform log level to WARN</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>--------- EXAMPLE 3: Set Terraform's log level to none ---------</maml:title>
        <dev:code>Set-TerraformLogLevel -LogLevel 'none'</dev:code>
        <dev:remarks>
          <maml:para>Would set the Terraform log level to none</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Start-SilentProcess</command:name>
      <command:verb>Start</command:verb>
      <command:noun>SilentProcess</command:noun>
      <maml:description>
        <maml:para>This command is deprecated and will be removed in a future release, please use Invoke-NativeCommand instead.
Starts a process that redirects stdout and stderr to log files.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Starts a process that redirects stdout and stderr to log files which is useful for a number of reasons. Firstly it allows programs to be run silently which is very handy in CI/CD deployments when you may often want to cut down on noise.</maml:para>
      <maml:para>It also allows for easy extraction of error messages from the process as they will be stored in ".log" files. Finally it also helps to get around this little bug: https://stackoverflow.com/a/66726535/10843454 when programs write verbose data to stderr.</maml:para>
      <maml:para>By redirecting to a file it never touches PowerShell's error stream, meaning you can be very selective about what errors are actually thrown.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Start-SilentProcess</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="PSPath">
          <maml:name>FilePath</maml:name>
          <maml:description>
            <maml:para>The path to the command to be run</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="Arguments">
          <maml:name>ArgumentList</maml:name>
          <maml:description>
            <maml:para>An optional list of arguments to be passed to it</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="2" aliases="none">
          <maml:name>WorkingDirectory</maml:name>
          <maml:description>
            <maml:para>If set will set the working directory for the called command, defaults to the current directory.</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ExitCodes</maml:name>
          <maml:description>
            <maml:para>The exit codes expected from this process when it has been successful</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>PassThru</maml:name>
          <maml:description>
            <maml:para>By default this cmdlet won't return any output from the invoked command, however if the PassThru parameter is set then the result of stdout is returned as an object at the end along with the locations of the stdout and stderr files.</maml:para>
            <maml:para>This can be useful if you need the output from the command or when debugging.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RedirectOutputPath</maml:name>
          <maml:description>
            <maml:para>The path to where the redirected output should be stored Defaults to the contents of the global variable 'RepoLogDirectory' if available If that isn't set then defaults to a temp directory</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RedirectOutputPrefix</maml:name>
          <maml:description>
            <maml:para>The prefix to use on the redirected streams, defaults to the command run time</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RedirectOutputSuffix</maml:name>
          <maml:description>
            <maml:para>The suffix for the redirected streams (defaults to log)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Log</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="1" aliases="Arguments">
        <maml:name>ArgumentList</maml:name>
        <maml:description>
          <maml:para>An optional list of arguments to be passed to it</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ExitCodes</maml:name>
        <maml:description>
          <maml:para>The exit codes expected from this process when it has been successful</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="PSPath">
        <maml:name>FilePath</maml:name>
        <maml:description>
          <maml:para>The path to the command to be run</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>PassThru</maml:name>
        <maml:description>
          <maml:para>By default this cmdlet won't return any output from the invoked command, however if the PassThru parameter is set then the result of stdout is returned as an object at the end along with the locations of the stdout and stderr files.</maml:para>
          <maml:para>This can be useful if you need the output from the command or when debugging.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RedirectOutputPath</maml:name>
        <maml:description>
          <maml:para>The path to where the redirected output should be stored Defaults to the contents of the global variable 'RepoLogDirectory' if available If that isn't set then defaults to a temp directory</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RedirectOutputPrefix</maml:name>
        <maml:description>
          <maml:para>The prefix to use on the redirected streams, defaults to the command run time</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RedirectOutputSuffix</maml:name>
        <maml:description>
          <maml:para>The suffix for the redirected streams (defaults to log)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Log</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByPropertyName, ByValue)" position="2" aliases="none">
        <maml:name>WorkingDirectory</maml:name>
        <maml:description>
          <maml:para>If set will set the working directory for the called command, defaults to the current directory.</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
      <command:inputType>
        <dev:type>
          <maml:name>System.Array</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------ EXAMPLE 1: Call a program and argument ------------</maml:title>
        <dev:code>Start-SilentProcess `
    -FilePath 'terraform' `
    -ArgumentList 'plan'</dev:code>
        <dev:remarks>
          <maml:para>This would call "terraform plan", output streams are redirected to terraform_DateTime_SteamName.log files in the systems temp directory, if the app returns a non-zero exit code an exception would be thrown</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>EXAMPLE 2: Call a program with arguments and set the accepted exit codes</maml:title>
        <dev:code>Start-SilentProcess `
    -FilePath 'terraform' `
    -ArgumentList 'plan'
    -ExitCodes = @(0,123)</dev:code>
        <dev:remarks>
          <maml:para>This would call "terraform plan", output streams are redirected to terraform_DateTime_SteamName.log files in the present working directory, if the app returns an exit code other than '0' or '123' an exception would be thrown</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>EXAMPLE 3: Call a program with arguments and redirect the output to a folder</maml:title>
        <dev:code>Start-SilentProcess `
    -FilePath 'terraform' `
    -ArgumentList 'plan' `
    -RedirectOutPutPath 'C:\logs'</dev:code>
        <dev:remarks>
          <maml:para>This would call "terraform plan", output streams are redirected to terraform_DateTime_SteamName.log files in the C:\logs folder, if the app returns a non-zero exit code an exception would be thrown</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>- EXAMPLE 4: Set the redirect output folder and prefix/suffix -</maml:title>
        <dev:code>Start-SilentProcess `
    -FilePath 'terraform' `
    -ArgumentList 'plan' `
    -RedirectOutputPrefix 'i_love_cats' `
    -RedirectOutputSuffix 'txt' `
    -RedirectOutPutPath 'C:\logs'</dev:code>
        <dev:remarks>
          <maml:para>This would call "terraform plan", output streams are redirected to i_love_cats_DateTime_SteamName.txt in the C:\logs folder If the app returns a non-zero exit code an exception would be thrown</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------- EXAMPLE 5: Return stdout on command completion --------</maml:title>
        <dev:code>Start-SilentProcess `
    -FilePath 'terraform' `
    -ArgumentList 'plan' `
    -PassThru</dev:code>
        <dev:remarks>
          <maml:para>This would call "terraform plan", output streams are redirected to dated log files in the systems temp directory If the app returns a non-zero exit code an exception would be thrown Upon successful completion of the command it's output and locations to the stdout and stderr files would be returned as a PowerShell object</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Test-Administrator</command:name>
      <command:verb>Test</command:verb>
      <command:noun>Administrator</command:noun>
      <maml:description>
        <maml:para>A simple function for testing if a user is running with administrator/root privileges or not.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>This cmdlet performs a test to see if the current user is running as administrator/root and returns `$true` if so, otherwise `$false` is returned.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Test-Administrator</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>PS C:\&gt; Test-Administrator</dev:code>
        <dev:remarks>
          <maml:para>Would return `$true` if the user is running as an administrator and `$false` if not.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Update-Changelog</command:name>
      <command:verb>Update</command:verb>
      <command:noun>Changelog</command:noun>
      <maml:description>
        <maml:para>Updates a repo's changelog according to the semver v1.0.0 spec.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Updates a repo's changelog according to the semver v1.0.0 spec.</maml:para>
      <maml:para>This is a completely guided cmdlet and the user will be prompted to provide all necessary information, the cmdlet can also be run programmatically by passing in the required parameters.</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Update-Changelog</maml:name>
        <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
          <maml:name>ChangelogPath</maml:name>
          <maml:description>
            <maml:para>The path to the changelog file</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>AutoGenerateFeatures</maml:name>
          <maml:description>
            <maml:para>If set will attempt to auto-generate features from the commit history (ignored if $Features are passed into the cmdlet)</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Bugfixes</maml:name>
          <maml:description>
            <maml:para>Any bugfixes in this release</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Features</maml:name>
          <maml:description>
            <maml:para>The feature list for this release</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>KnownIssues</maml:name>
          <maml:description>
            <maml:para>Any known issues in this release</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
          <dev:type>
            <maml:name>Array</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>ReleaseType</maml:name>
          <maml:description>
            <maml:para>The type of release (major, minor, patch)</maml:para>
          </maml:description>
          <command:parameterValueGroup>
            <command:parameterValue required="false" command:variableLength="false">major</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">minor</command:parameterValue>
            <command:parameterValue required="false" command:variableLength="false">patch</command:parameterValue>
          </command:parameterValueGroup>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>RepoUrl</maml:name>
          <maml:description>
            <maml:para>The URL of the repo that the changelog belongs to If none is provided the cmdlet will attempt to work it out from the current changelog and prompt if needed</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>SkipOptionalPrompts</maml:name>
          <maml:description>
            <maml:para>Skip optional prompts</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>AutoGenerateFeatures</maml:name>
        <maml:description>
          <maml:para>If set will attempt to auto-generate features from the commit history (ignored if $Features are passed into the cmdlet)</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Bugfixes</maml:name>
        <maml:description>
          <maml:para>Any bugfixes in this release</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="true" pipelineInput="True (ByPropertyName, ByValue)" position="0" aliases="none">
        <maml:name>ChangelogPath</maml:name>
        <maml:description>
          <maml:para>The path to the changelog file</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Features</maml:name>
        <maml:description>
          <maml:para>The feature list for this release</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>KnownIssues</maml:name>
        <maml:description>
          <maml:para>Any known issues in this release</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">Array</command:parameterValue>
        <dev:type>
          <maml:name>Array</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>ReleaseType</maml:name>
        <maml:description>
          <maml:para>The type of release (major, minor, patch)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>RepoUrl</maml:name>
        <maml:description>
          <maml:para>The URL of the repo that the changelog belongs to If none is provided the cmdlet will attempt to work it out from the current changelog and prompt if needed</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>SkipOptionalPrompts</maml:name>
        <maml:description>
          <maml:para>Skip optional prompts</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>System.String</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>------------------- EXAMPLE 1: Guided input -------------------</maml:title>
        <dev:code>Update-Changelog -ChangelogPath C:\CHANGELOG.md</dev:code>
        <dev:remarks>
          <maml:para>This would prompt the user for all information and then update the changelog at 'C:\CHANGELOG.md'</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------ EXAMPLE 2: Providing all information in parameters ------</maml:title>
        <dev:code>Update-Changelog `
    -ChangelogPath C:\CHANGELOG.md `
    -ReleaseType 'major' `
    -Features "my feature 1","my feature 2" `
    -BugFixes "Fixed bug 1" `
    -KnownIssues "Bug 2 still a problem"</dev:code>
        <dev:remarks>
          <maml:para>As all required and optional information has been provided the changelog at 'C:\CHANGELOG.md' would be updated with the provided information</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>EXAMPLE 3: Skipping optional prompts and auto generating feature list</maml:title>
        <dev:code>Update-Changelog `
    -ChangelogPath C:\CHANGELOG.md `
    -ReleaseType 'major' `
    -AutoGenerateFeatures `
    -SkipOptionalPrompts</dev:code>
        <dev:remarks>
          <maml:para>As all required information has been provided and `SkipOptionalPrompts` has been passed the changelog at 'C:\CHANGELOG.md' would be updated with the provided information.</maml:para>
          <maml:para>As `AutoGenerateFeatures` was also passed the feature list will be generated from this branches commit history</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Write-TeamcityBuildProblem</command:name>
      <command:verb>Write</command:verb>
      <command:noun>TeamcityBuildProblem</command:noun>
      <maml:description>
        <maml:para>Writes a Teamcity build problem to StdOut and the same message to StdErr.</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Writes a Teamcity build problem to StdOut and the same message to StdErr. The StdOut message is picked up by Teamcity and used to build a list of build problems at the end of the build. The same message (sans the encapsulating Teamcity fluff) is also output onto StdErr (or thrown as an exception if preferred)</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Write-TeamcityBuildProblem</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Message</maml:name>
          <maml:description>
            <maml:para>The message you want displayed in TeamCity</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>TerminatingError</maml:name>
          <maml:description>
            <maml:para>If set to true this will throw an exception instead of writing to StdErr.</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Message</maml:name>
        <maml:description>
          <maml:para>The message you want displayed in TeamCity</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>TerminatingError</maml:name>
        <maml:description>
          <maml:para>If set to true this will throw an exception instead of writing to StdErr.</maml:para>
        </maml:description>
        <command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>Messages cannot contain newlines otherwise it will break Teamcity so they are stripped out. The Teamcity status is written first as this should be non-terminating whereas StdErr might be, depending on the ErrorActionPreference parameter</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------- EXAMPLE 1: Raise a standard error --------------</maml:title>
        <dev:code>Write-TeamcityBuildProblem -Message "Too many cats"</dev:code>
        <dev:remarks>
          <maml:para>This would output ##teamcity[buildProblem description='Too many cats'] to StdOut and 'Too many cats' to StdErr</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>------------- EXAMPLE 2: Raise a terminating error -------------</maml:title>
        <dev:code>Write-TeamcityBuildProblem -Message "Not enough cats" -TerminatingError $true</dev:code>
        <dev:remarks>
          <maml:para>This would output ##teamcity[buildProblem description='Not enough cats'] to StdOut and would throw an exception of "Not enough cats"</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Write-TeamcityStatus</command:name>
      <command:verb>Write</command:verb>
      <command:noun>TeamcityStatus</command:noun>
      <maml:description>
        <maml:para>Writes a status message to StdOut</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Writes a status message to StdOut. These messages are picked up by Teamcity and used in the build output screen</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Write-TeamcityStatus</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>Message</maml:name>
          <maml:description>
            <maml:para>The message you want displayed in TeamCity</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>Message</maml:name>
        <maml:description>
          <maml:para>The message you want displayed in TeamCity</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>Messages cannot contain newlines otherwise it will break Teamcity so they are stripped out.</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Write-TeamcityStatus "Hello, world!"</dev:code>
        <dev:remarks>
          <maml:para>Will output "##teamcity[buildStatus text='Hello, world! - {build.status.text}']" to StdOut</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
</helpItems>