导出Csv MIM FIM PowerShell问题

导出Csv MIM FIM PowerShell问题,powershell,Powershell,我被要求检索一个包含所有注册到FIM门户的用户的.csv列表。我进行了一些搜索,直到无意中发现了以下脚本: set-variable -name URI -value "http://localhost:5725/resourcemanagementservice' " -option constant set-variable -name CSV -value "RegistredResetPassUsers.csv" -option constant clear If(@(Get-P

我被要求检索一个包含所有注册到FIM门户的用户的.csv列表。我进行了一些搜索,直到无意中发现了以下脚本:

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
与:


这可能是由于权限设置造成的

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

可能存在一些管理策略规则设置,因此特定集合中的用户帐户可以读取其他用户的AuthNWFRegistered属性,以支持疑难解答和客户支持

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

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

  • 为此特定报告创建一个单独的MPR(这是我的建议),该MPR授予特定用户帐户读取AuthNWFRegistered属性的权限
还要确保只有一个工作流与用户注册关联。如果存在多个,则希望在XPath筛选器中设置所有注册工作流的目标集,而不是特定的工作流名称

另请注意-虽然FimaAutomation有时需要管理单元与标准工具一起使用,但对于您的自定义工作,我强烈建议使用Lithnet的LithnetRMAPowerShell模块()

使用它,您的工作效率会更高,而且大多数操作都不需要样板代码。这将是您使用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

在最后一行中获取此错误。我相信这是指我没有收到任何信息<代码>导出Csv:无法将参数绑定到参数“InputObject”,因为它为空。在第23行,字符:10+$users |导出csv-路径$csv-编码默认值+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,Microsoft.PowerShell.Commands.ExportCsvCommand可能您没有在数组中正确存储用户对象。执行此操作后,我不再在第23行收到错误,但导出的.csv文件为空。。。我不理解X_X。在将结果存储到数组中之前,请逐个运行每一行,以确认代码在该部分之前工作正常。
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