Export-Csv MIM FIM PowerShell Issue



我被要求检索一个.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 

该脚本工作没有错误,除了它导出的实际列表仅包含我的显示名称。我一直在试图弄清楚为什么它不导出所有用户的完整列表而只显示我的名字,但我无法弄清楚,所以我想知道是否有人可以帮助我阐明这个问题。

再次感谢你们可以提供的任何帮助!

没有使用此管理单元/产品的经验,但是看到代码从根本上工作(它返回您的对象),这可能是权限问题。您可能无法读取其他用户对象,因此它们不会向您公开。

如果您可以在某种 UI 控制台中查看它们,请检查与 API 操作相关的单独权限,并确保您能够以这种方式访问。 另一种做法可能是逐行运行代码,查看从每行收到的结果,以确保得到预期的结果。

尝试替换:

[array]$users = $null

跟:

$users = @()

这可能是由于权限设置。

默认情况下,您有权查看自己的属性。

可能存在一些管理策略规则设置,以便特定集中的用户帐户可以读取其他用户的 AuthNWFRegistered 属性,以支持故障排除和客户支持。

您将需要使用以下选项之一:

  • 将用于此脚本的帐户添加到已委派此读取权限的集合中

  • 为此特定报告创建一个单独的 MPR(这是我建议的),该 MPR 授予特定用户帐户读取 AuthNWFRegistered 属性的权限。

还要确保实际上只有一个工作流与用户注册相关联。如果有多个,则需要在 XPath 筛选器中使用所有注册工作流(而不是特定工作流名称)将"设置"作为目标。

另外,虽然FIMAutomation有时是与标准工具一起使用所必需的管理单元,但对于您的自定义工作,我强烈建议使用Lithnet的LithnetRMAPowerShell模块(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

最新更新