using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Interact with query parameters or the body of the request.
$LogContentcustomerId = ""
$Request.Body.LogContent
sharedKey = ""
$LogType = $Request.Body.LogType
""
Function Build-Signature ($customerId, $sharedKey, $date, $contentLength, $method, $contentType, $resource){
 
    $xHeaders = "x-ms-date:" + $date
 
    $stringToHash = $method + "`n" + $contentLength + "`n" + $contentType + "`n" + $xHeaders + "`n" + $resource
 
 
 
    $bytesToHash = [Text.Encoding]::UTF8.GetBytes($stringToHash)
 
    $keyBytes = [Convert]::FromBase64String($sharedKey)
 
 
 
    $sha256 = New-Object System.Security.Cryptography.HMACSHA256
 
    $sha256.Key = $keyBytes
 
    $calculatedHash = $sha256.ComputeHash($bytesToHash)
 
    $encodedHash = [Convert]::ToBase64String($calculatedHash)
 
    $authorization = 'SharedKey {0}:{1}' -f $customerId,$encodedHash
 
    return $authorization
}
 
 
Function Post-LogAnalyticsData ($customerId, $sharedKey, $body, $logType){
 
    $method = "POST"
 
    $contentType = "application/json"
 
    $resource = "/api/logs"
 
    $rfc1123date = ([DateTime]::UtcNow).ToString("r")
 
    $contentLength = $body.Length
 
    $signature = Build-Signature -customerId $customerId -sharedKey $sharedKey -date $rfc1123date -contentLength $contentLength -method $method -contentType $contentType -resource $resource
   
 
   
    $uri = "https://" + $customerId + ".ods.opinsights.azure.com" + $resource + "?api-version=2016-04-01"
 
 
 
    $headers = @{
 
        "Authorization" = $signature;
 
        "Log-Type" = $logType;
 
        "x-ms-date" = $rfc1123date;
 
    }
 
 
 
    $response = Invoke-WebRequest -Uri $uri -Method $method -ContentType $contentType -Headers $headers -Body $body -UseBasicParsing
 
    return $response.StatusCode
}
$customerId = ""
$sharedKey = ""
$LogType = ""
$Properties = [Ordered] @{
 
    "ComputerName"     = $env:computername
 
    "User"             = $env:Username
}
$CustomLogs = New-Object -TypeName "PSObject" -Property $Properties | ConvertTo-JSON -Depth 10
#Submit the data to the API endpoint
$params = @{
 
    CustomerId = $customerId
 
    SharedKey  = $sharedKey
 
    Body       = ([System.Text.Encoding]::UTF8.GetBytes($CustomLogs))
 
    LogType    = $LogType
}
$LogResponse = Post-LogAnalyticsData @params
$LogResponse