Export-Csv MIM FIM PowerShell问题

时间:2018-05-16 15:06:47

标签: powershell

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

该脚本无错误地工作,只是它导出的实际列表包含我的显示名称。我一直试图弄清楚为什么它没有输出所有用户的完整列表,只显示我的名字,但我还没有弄明白,所以我想知道是否有人可以帮助我摆脱对此问题有所了解。

再次感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:0)

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

如果您可以在某种UI控制台中查看它们,请检查与API操作相关的单独权限,并确保您可以通过该方式访问。 另一个行动方案可能是逐行运行代码并查看从每行获得的结果,以确保获得您期望的结果。

答案 1 :(得分:0)

尝试更换:

[array]$users = $null

使用:

$users = @()

答案 2 :(得分:0)

这可能是由于权限设置所致。

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

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

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

  • 将此脚本所使用的帐户添加到已经委派了此“读取”权限的Set中

  • 为此特定报告创建一个单独的MPR(这是我的建议),以授予特定用户帐户读取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