Isilon: Bruke PowerShell med plattform-API – opprette objekter og RAN

摘要: Denne artikkelen forklarer hvordan du bruker PowerShell med OneFS Platform API til å opprette objekter og RAN.

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

Ikke nødvendig

原因

Ikke nødvendig

解决方案

Introduksjon til JSON

PAPI bruker JSON som datautvekslingsformat, og det er viktig å forstå hvordan du kan bruke PAPI til å opprette, endre eller slette ressurser. Du kan lære mer om JSON på www.json.org , men hovedprinsippet er at det er fullstendig uavhengig programmeringsspråk og er bygget på to strukturer:
  • En samling navn/verdipar
  • En bestilt liste over verdier

Eksempel på utdata fra å hente et systemobjekt vil se slik ut:

{
"<objekt>": {
"<egenskap>": <verdi>,
...
}

Hvis du vil vite hvilken JSON-tekst vi trenger for å OPPRETTE et objekt, kan du se på PAPI-selvdokumentasjonen ved å sende følgende forespørsel:
GET /platform/1/quota/quotas?describe

Here is the relevant PowerShell code: 

#Get PAPI-selvdokumentasjon
for kvoter$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

Eksempelutdataene nedenfor skisserer hva du trenger for å POSTe for å opprette en ny kvote. Vær oppmerksom på de nødvendige egenskapene, siden de kanskje ikke er de samme egenskapene som kreves for den tilsvarende isi-kommandoen.

SLN319398_en_US__1i_isilon_1–PowerShell

Ved hjelp av eksempelegenskapene er følgende et eksempel på JSON-streng som kan brukes til å opprette en kataloghard kvote:

$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": /ifs/home/user1», "håndhevet": sant, "terskler": {"hard":10000000},"thresholds_include_overhead": false}
" @ 

Når JSON-strengen er fullført, er alt som er igjen å bygge invoke-RestMethod-parameterne og sende. I eksempelkoden nedenfor er JSON-strengen kroppen til POST, og at innholdstypen er applikasjon/json:

$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8" -Method POST
Write-Host " Resulting Quota ID: " $ISIObject.id

Sette alt sammen

Med et eksempel kan vi anta at miljøet ditt har mange hjemmekataloger for brukere under én enkelt overordnet katalog (for eksempel: /ifs/home) og du ønsker å angi katalogkvoter for hver av disse hjemmekatalogene. Bruk Isilon RESTful-tilgangen til API-en namespace (RAN) for å få banene til hver brukers hjemmekatalog. Følgende kode vil hente underkatalogene for en angitt bane og deretter angi en katalogkvote på hver underkatalog:
 

# Hent
underkataloger for angitt bane$resource = "/namespace/" + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop through each katalog og angi kvoten
ForEach ($folder i $ISIObject.children) {

#Create quota
$resource ="/platform/1/quota/quotas"
Write-Host "Setting a $quotasize byte quota on $quotapath"
$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": "$quotapath", "håndhevet": sant, "terskler": {"hard":$quotasize},"thresholds_include_overhead": false}
"@
$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject 2 = Invoke-RestMethod -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8" -Method POST
Write-Host " Resulting Quota ID: " $ISIObject2.id
}

Her er utdataene fra å kjøre skriptet som er koblet til dette innlegget:

SLN319398_en_US__2i_isilon_2–PowerShell
SLN319398_en_US__3i_isilon_3–PowerShell

受影响的产品

Isilon, PowerScale OneFS, Isilon Platform API
文章属性
文章编号: 000132770
文章类型: Solution
上次修改时间: 12 10月 2023
版本:  5
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。