Public/Clear-ePOwerShellTag.ps1

<#
.SYNOPSIS

    Removes a tag from a specified computer system

.DESCRIPTION

    Ensures that a tag is cleared from the specicied computer system, whether
    that means it wasn't applied to begin with, or it removes it from the system.

.PARAMETER ComputerName

    Specifies a computer system the tag will be removed from.

.PARAMETER TagName

    Specifies a tag to be removed from the specified computer system

.EXAMPLE

    Clear-ePOwerShellTag Computer1 Tag1

#>


function Clear-ePOwerShellTag {
    [CmdletBinding()]
    [Alias('Clear-ePOTag')]
    param (
        [Parameter(Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, ParameterSetName = 'ComputerName')]
        [String[]]
        $ComputerName,

        [Parameter(Mandatory = $True)]
        [String[]]
        $TagName
    )

    begin {}

    process {
        foreach ($Computer in $ComputerName) {
            Write-Verbose ('Clearing from computer: {0}' -f $Computer)

            foreach ($Tag in $TagName) {
                Write-Verbose ('Clearing tag: {0}' -f $Tag)
                $Request = @{
                    Name     = 'system.clearTag'
                    PassThru = $True
                    Query    = @{
                        names   = $Computer
                        tagName = $Tag
                    }
                }

                Write-Debug ('Request: {0}' -f ($Request | Out-String))
                try {
                    $Result = Invoke-ePOwerShellRequest @Request
                } catch {
                    Throw $_
                }

                Write-Debug ('Result: {0}' -f $Result)

                if ($Result -eq 0) {
                    Write-Verbose ('Tag [{0}] is already cleared from computer {1}' -f $Tag, $Computer)
                } elseif ($Result -eq 1) {
                    Write-Verbose ('Successfully cleared tag [{0}] to computer {1}' -f $Tag, $Computer)
                } else {
                    Write-Warning ('Unknown response while clearing tag [{0}] from {1}: {2}' -f $Tag, $Computer, $Result)
                }
            }
        }
    }
}