Skip to content

Instantly share code, notes, and snippets.

@baskarp
Created July 19, 2013 18:57

Revisions

  1. Baskar Puvanathasan created this gist Jul 19, 2013.
    38 changes: 38 additions & 0 deletions active_directory_import.ps1
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    Import-Module ActiveDirectory

    #Import users via the PD API, echo results
    function POST_Request ($url,$parameters, $api_key) {
    $http_request = New-Object -ComObject Msxml2.XMLHTTP
    $http_request.open('POST', $url, $false)
    $http_request.setRequestHeader("Content-type", "application/json")
    $token = "Token token=" + $api_key
    $http_request.setRequestHeader("Authorization", $token)
    $http_request.setRequestHeader("Content-length", $parameters.length)
    $http_request.setRequestHeader("Connection", "close")
    $http_request.send($parameters)
    Write-Host "Server Response:" $http_request.statusText
    }

    $ad_group = Read-Host "Enter AD Group Name:"

    #Pull all users from the specified group within Active Directory
    Get-ADGroup $ad_group | % {
    $users = "Name,Email`r`n";
    $_ | Get-ADGroupMember | % {
    $user = Get-ADUser $_ -Properties *
    $users += $user.Name + "," + $user.EmailAddress + "`r`n"
    }
    }

    #Get the authentication information and add each users via POST_Request
    $subdomain = Read-Host "Enter subdomain"
    $api_key = Read-Host "Enter API key"
    $requester_id = Read-Host "Enter Requester ID"
    $url = "https://" + $subdomain + ".pagerduty.com/api/v1/users"
    $parameters = New-Object Collections.Specialized.NameValueCollection;
    $users = ConvertFrom-Csv $users
    $users | % {
    Write-Host "Importing user:" $_.Name
    $parameters = "{`"requester_id`":`"" + $requester_id + "`",`"name`":`"" + $_.Name + "`",`"email`":`"" + $_.Email + "`"}"
    POST_Request $url $parameters $api_key
    }