Follow

REST API Entegrasyonu: PowerShell ile Dış Sistemlere (Envanter, Biletleme vb.) Veri Gönderme/Çekme

PowerShell ile REST API’lere bağlanarak Jira gibi dış sistemlerle veri alışverişi yapmayı, gerçek entegrasyon örnekleriyle anlatıyorum.
PowerShell REST API Entegrasyonu makalesi kapak görseli

Bir kullanıcının hesabı devre dışı bırakıldığında bunu ilgili ekibe manuel olarak haber vermek, unutulmaya en açık adımlardan biri. Modern BT altyapısında sistemler artık birbirinden izole çalışmıyor ve PowerShell’in Invoke-RestMethod komutu, AD, envanter sistemleri ve Jira gibi biletleme araçları arasında tam da bu tür köprüleri otomatik kurmanızı sağlıyor.

Temel REST API Çağrısı

$header = @{
    "Authorization" = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("kullanici:api-token"))
    "Content-Type" = "application/json"
}

$sonuc = Invoke-RestMethod -Uri "https://sirket.atlassian.net/rest/api/2/issue/PROJ-123" -Method Get -Headers $header
$sonuc.fields.summary

Örnek Senaryo: AD’den Jira’ya Otomatik Bilet Açma

Bir kullanıcının hesabı devre dışı bırakıldığında ilgili BT ekibine otomatik bir Jira bileti açan bir entegrasyon kurmuştum:

function New-JiraBileti {
    param($ozet, $aciklama)

    $body = @{
        fields = @{
            project = @{ key = "ITOPS" }
            summary = $ozet
            description = $aciklama
            issuetype = @{ name = "Task" }
        }
    } | ConvertTo-Json -Depth 5

    Invoke-RestMethod -Uri "https://sirket.atlassian.net/rest/api/2/issue" `
        -Method Post -Headers $header -Body $body
}

# Kullanım: bir AD hesabı devre dışı bırakıldığında
New-JiraBileti -ozet "Hesap devre dışı bırakıldı: jsmith" `
    -aciklama "jsmith hesabı 90 gün inaktiflik nedeniyle otomatik devre dışı bırakıldı. Ekipman iadesi kontrol edilmeli."

Envanter Sistemine Veri Gönderme Örneği

PowerShell ile toplanan donanım envanterini merkezi bir envanter API’sine göndermek de aynı mantıkla çalışıyor:

$envanter = Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model
$disk = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size, FreeSpace

$payload = @{
    hostname = $env:COMPUTERNAME
    manufacturer = $envanter.Manufacturer
    model = $envanter.Model
    diskTotalGB = [math]::Round($disk.Size / 1GB, 2)
    diskFreeGB = [math]::Round($disk.FreeSpace / 1GB, 2)
    lastUpdated = (Get-Date -Format "o")
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://envanter.sirket.com/api/cihazlar" -Method Post -Body $payload -ContentType "application/json"

Hata Yönetiminden Kaçış Yok

API çağrıları gerçek dünyada her zaman başarılı dönmüyor — yetkilendirme süresi dolar, servis geçici olarak yanıt vermez, rate limit aşılır. Bunları ayırt eden bir hata yönetimi olmadan yazılan bir script, ilk üretim hatasında sessizce çöküyor:

try {
    $sonuc = Invoke-RestMethod -Uri $apiUrl -Method Get -Headers $header -TimeoutSec 30
} catch {
    if ($_.Exception.Response.StatusCode.value__ -eq 401) {
        Write-Host "Kimlik doğrulama hatası - API token geçersiz olabilir" -ForegroundColor Red
    } elseif ($_.Exception.Response.StatusCode.value__ -eq 429) {
        Write-Host "Rate limit aşıldı - biraz bekleyip tekrar deneyin" -ForegroundColor Yellow
    } else {
        Write-Host "API hatası: $($_.Exception.Message)" -ForegroundColor Red
    }
}

Son Not

PowerShell’in REST API yetenekleri, AD’yi tek başına izole bir sistem olmaktan çıkarıp biletleme, envanter ve daha fazlasıyla konuşan entegre bir BT ekosisteminin parçası haline getiriyor. Bu tür entegrasyonların en somut faydası, manuel bilgi aktarımından kaynaklanan gecikmeleri ve unutulan adımları ortadan kaldırması.

Comments
Join the Discussion and Share Your Opinion
Add a Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Newsletter
Join Design Community
Get the latest updates, creative tips, and exclusive resources straight to your inbox. Let’s explore the future of design and innovation together.