我正在使用PowerShell腳本,我一直在使用枚舉類型時遇到困難。我對SharePoint Online執行REST調用以獲取有關特定組的信息。在PowerShell中訪問枚舉名稱
$group = Invoke-SPORestMethod -Url "https://tenant.sharepoint.com/sites/site/_api/web/RoleAssignments/GetByPrincipalId(8)?`$expand=RoleDefinitionBindings"
$group.RoleDefinitionBindings.results[0].RoleTypeKind
它返回一個int,RoleTypeKind,即在[Microsoft.SharePoint.Client.RoleType]
一個枚舉。我無法訪問assciated枚舉值的名稱屬性。目前,我正在做這樣的,但它似乎可怕的錯誤:
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
}
}
}
明知$group.RoleDefinitionBindings.results[0].RoleTypeKind
返回枚舉的正確INT,我怎麼能更直接地訪問枚舉的名字而不是看似janky實施我想到了?
我不希望做一個反向查找,但我覺得我的實現是可怕的。必須有一種原生的方式來做到這一點,我並沒有把握。 –
呃...我剛剛貼了一張?當然,如果你已經有一個'RoleType'對象而不是數字值,你應該可以通過調用它的'ToString()'方法來獲得名字,如[這個答案]中所建議的(http://stackoverflow.com /一個/1630171分之38568919)。 –