Here is another quick one – let’s send events to an event hub with PowerShell!
function New-SasToken { param( [string]$ResourceUri, [string]$Key, [string]$PolicyName, [timespan]$TokenTimeToLive ) $Expires = [DateTimeOffset]::Now.Add($TokenTimeToLive).ToUnixTimeSeconds() $StringToSign = [System.Web.HttpUtility]::UrlEncode($ResourceUri) + "`n" + $Expires $HMACSHA256 = New-Object System.Security.Cryptography.HMACSHA256 $HMACSHA256.Key = [Text.Encoding]::UTF8.GetBytes($Key) $Signature = $HMACSHA256.ComputeHash([Text.Encoding]::UTF8.GetBytes($StringToSign)) $Signature = [Convert]::ToBase64String($Signature) $Token = "SharedAccessSignature sr=" + [System.Web.HttpUtility]::UrlEncode($ResourceUri) + "&sig=" + [System.Web.HttpUtility]::UrlEncode($Signature) + "&se=" + $Expires + "&skn=" + $PolicyName return $Token } # Event Hub parameters $namespace = "yourNamespace" $eventHubName = "yourEventHubName" $sharedAccessKeyName = "yourSharedAccessKeyName" $sharedAccessKey = "yourSharedAccessKey" $endpoint = "https://$namespace.servicebus.windows.net/$eventHubName/messages" $tokenTimeToLive = New-TimeSpan -Minutes 60 # Generate SAS token $sasToken = New-SasToken -ResourceUri $endpoint -Key $sharedAccessKey -PolicyName $sharedAccessKeyName -TokenTimeToLive $tokenTimeToLive # Event data $body = @" { "Data": "Sample Event Data" } "@ # Send the event $headers = @{ "Authorization" = $sasToken "Content-Type" = "application/json" } try { $response = Invoke-RestMethod -Uri $endpoint -Method Post -Body $body -Headers $headers Write-Output "Event sent successfully" } catch { Write-Error "Failed to send event: $_" }