functions/Update-AzureDevOpsWorkItemState.ps1

function Update-AzureDevOpsWorkItemState {

    param (
        [string]$OrganizationName,
        [string]$PersonalAccessToken,
        [int]$WorkItemId,
        [string]$NewState
    )

    $uri = ('https://dev.azure.com/{0}/_apis/wit/workitems/{1}?api-version=5.1' -f $organizationName, $workItemId)

    $headers = @{
        Authorization  = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PersonalAccessToken)"))
        'Content-Type' = 'application/json-patch+json'
    }

    $bodyObj = @(
        @{ from = $null; op = 'add'; path = '/fields/System.State'; value = $NewState }
    )
    $body = ConvertTo-Json -InputObject $bodyObj -Depth 100

    $response = Invoke-WebRequest -Uri $uri -Method 'PATCH' -Body $body -Headers $headers -UseBasicParsing

    return ($response.StatusCode -eq 200)
}