Ich arbeite an PowerShell ein Skript und ich hatte eine schwierige Zeit mit Enum-Typen. Ich führe einen REST-Aufruf für SharePoint Online aus, um Informationen zu einer bestimmten Gruppe abzurufen.Zugriff auf enum Name in PowerShell
$group = Invoke-SPORestMethod -Url "https://tenant.sharepoint.com/sites/site/_api/web/RoleAssignments/GetByPrincipalId(8)?`$expand=RoleDefinitionBindings"
$group.RoleDefinitionBindings.results[0].RoleTypeKind
Es ein int zurückgibt, RoleTypeKind, das ist eine Enum in [Microsoft.SharePoint.Client.RoleType]
. Ich habe Schwierigkeiten beim Zugriff auf die name-Eigenschaft des zugehörigen enum-Wertes. Ich mache es zur Zeit wie diese, aber es scheint schrecklich falsch:
function getGroupPermissionKind([int]$roleType){
#https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.client.roletype.aspx
[Enum]::GetValues([Microsoft.SharePoint.Client.RoleType]) | foreach {
$Name = $_
$Value = ([Microsoft.SharePoint.Client.RoleType]::$_).value__
if ($Value -eq $roleType){
return $Name
}
}
}
Zu wissen, dass $group.RoleDefinitionBindings.results[0].RoleTypeKind
die richtige int der Enumeration zurück, wie kann es mehr direkt den Namen der ENUM-Zugriff statt mit der scheinbar janky Umsetzung Ich habe es mir ausgedacht?
Ich will ein Reverse-Lookup zu tun, aber ich fühle, dass meine Implementierung ist schrecklich. Es muss einen nativen Weg geben, den ich nicht verstehe. –
Umm ... Ich habe gerade einen gepostet? Wenn Sie bereits ein 'RoleType'-Objekt anstelle des numerischen Werts haben, sollten Sie den Namen natürlich erhalten, indem Sie die Methode' ToString() 'wie in [diese Antwort] vorgeschlagen (http://stackoverflow.com) aufrufen/a/38568919/1630171). –