استدعاء REST API من PowerShell Script




(3)

ما تريده هو PowerShell 3 و Invoke-RestMethod و ConvertTo-Json ConvertFrom-Json و ConvertFrom-Json cmdlets. سوف ينتهي الرمز الخاص بك مثل:

 $stuff = Invoke-RestMethod -Uri $url -Method Get;

ويجب ألا تكون هناك حاجة لاستدعاء ConvertFrom-Json على $stuff الناتجة => أنها بالفعل في تنسيق غير قابل للاستخدام.

راجع http://technet.microsoft.com/en-us/Library/hh849971.aspx للحصول على التفاصيل.

كيف يمكنني استدعاء واجهة برمجة تطبيقات تستند إلى الراحة من برنامج PowerShell النصي ومعالجة إجابة Json؟


نستخدم Powershell للاستعلام عن واجهة برمجة تطبيقات REST التي تتعامل فقط مع بيانات نمط Json. كان الأمر غريبًا في البداية ، ولكن الشفرة أدناه هي كل ما نحتاج إليه لإجراء معظم العمليات:

# Authentication
$webclient = New-Object System.Net.WebClient
$creds = New-Object System.Net.NetworkCredential("MyUsername","MyPassword");
$webclient.Credentials = $creds

# Data prep
$data = @{Name='Test';} | ConvertTo-Json

# GET
$webClient.DownloadString($url) | ConvertFrom-Json

# POST
$webClient.UploadString($url,'POST',$data)

# PUT
$webClient.UploadString($url,'PUT',$data)

لقد قمت بإنشاء وظيفة Get-Http هذه لإجراء طلبات HTTP

param([string]$url)

$req = [System.Net.WebRequest]::Create($url)
$req.Method ="GET"
$req.ContentLength = 0

$resp = $req.GetResponse()
$reader = new-object System.IO.StreamReader($resp.GetResponseStream())
$reader.ReadToEnd()

إن التعامل مع النتيجة النهائية كـ xml أمر سهل للغاية ، ومع ذلك ، إذا كنت ترغب في معالجة JSON ، فربما تحتاج إلى بعض .Net library مثل JSON.Net.





powershell