我被要求检索 .csv 列表,其中包含注册到 FIM门户的所有用户。我做了一些搜索,直到我偶然发现这个剧本:
set-variable -name URI -value "http://localhost:5725/resourcemanagementservice' " -option constant
set-variable -name CSV -value "RegistredResetPassUsers.csv" -option constant
clear
If(@(Get-PSSnapin | Where-Object {$_.Name -eq "FIMAutomation"} ).count -eq 0) {Add-PSSnapin FIMAutomation}
$WFDFilter = "/WorkflowDefinition[DisplayName='Password Reset AuthN Workflow']"
$curObjectWFD = export-fimconfig -uri $URI –onlyBaseResources -customconfig ($WFDFilter) -ErrorVariable Err -ErrorAction SilentlyContinue
$WFDObjectID = (($curObjectWFD.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq "ObjectID"}).value).split(":")[2]
$Filter = "/Person[AuthNWFRegistered = '$WFDObjectID']"
$curObject = export-fimconfig -uri $URI –onlyBaseResources -customconfig ($Filter) -ErrorVariable Err -ErrorAction SilentlyContinue
[array]$users = $null
foreach($Object in $curObject)
{
$ResetPass = New-Object PSObject
$UserDisplayName = (($Object.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq "DisplayName"}).Value)
$ResetPass | Add-Member NoteProperty "DisplayName" $UserDisplayName
$Users += $ResetPass
}
$users | export-csv -path $CSV
该脚本无错误地工作,只是它导出的实际列表包含我的显示名称。我一直试图弄清楚为什么它没有输出所有用户的完整列表,只显示我的名字,但我还没有弄明白,所以我想知道是否有人可以帮助我摆脱对此问题有所了解。
再次感谢您提供的任何帮助!
答案 0 :(得分:0)
没有使用此管理单元/产品的经验,但看到代码从根本上起作用(它返回您的对象),这可能是权限问题。您可能无法阅读其他用户对象,因此他们不会向您展示。
如果您可以在某种UI控制台中查看它们,请检查与API操作相关的单独权限,并确保您可以通过该方式访问。 另一个行动方案可能是逐行运行代码并查看从每行获得的结果,以确保获得您期望的结果。
答案 1 :(得分:0)
尝试更换:
[array]$users = $null
使用:
$users = @()
答案 2 :(得分:0)
这可能是由于权限设置所致。
默认情况下,您有权查看自己的属性。
可能有一些管理策略规则设置,因此特定集中的用户帐户可以读取其他用户的AuthNWFRegistered属性,以支持故障排除和客户支持。
您将需要使用以下选项之一:
或
还要确保实际上只有一个与用户注册相关联的工作流。如果有多个,则希望将Set与所有注册工作流一起定位到XPath过滤器中,而不是特定的工作流名称。
另外,虽然FIMAutomation有时是与标准工具一起使用所必需的管理单元,但强烈建议您使用Lithnet的 LithnetRMA PowerShell模块(https://github.com/lithnet/resourcemanagement-powershell)来进行自定义工作。
使用它将提高生产力,并且大多数操作将不需要样板代码FIMAutomation。这将是您使用LithnetRMA的代码。
Set-ResourceManagementClient -BaseAddress 'http://localhost:5725/resourcemanagementservice'
$scope = Search-Resources -XPath "/Person[AuthNWFRegistered = /WorkflowDefinition[DisplayName='Password Reset AuthN Workflow']]" -ExpectedObjectType Person
$scope | select DisplayName | Export-Csv 'RegistredResetPassUsers.csv' -Encoding Unicode