使用PowerShell列出所有用户configuration文件属性 – PowerShell查询

以下脚本为Sharepoint 2007上的用户分配了所有UserProfile属性:

[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles") # Function: Get-UserProfiles # Description: return a UserProfileManager object containing all user profiles # Parameters: SSPName SSPName # Function global:Get-UserProfiles($SSPName) { $ServerContext = [Microsoft.Office.Server.ServerContext]::GetContext($SSPName); $UPManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServerContext); return $UPManager.GetEnumerator(); } $profiles = Get-UserProfiles("SharedServices"); $profiles | ForEach-Object { $_.GetEnumerator();} 

但是,我想要做的是能够返回一个表,或在configuration文件中的所有csv文件,

到目前为止,我只能得到特定的属性(见下面的答案)。 我已经尝试将输出传送到|ft| select | select但这只是返回空白。

我觉得我好亲近 我不想用很多$_.Item("property")replace$_.GetEnumerator()调用$_.GetEnumerator() $_.Item("property")调用,它不觉得我应该。 有任何想法吗?

我进一步开发了代码,现在它接受一个以逗号分隔的属性列表,并将它们写入分隔文件。

 # Outputs a delimited file with specified user profile properties for each user in Sharepoint # Create array of desired properties $arProperties = 'UserName','FirstName','LastName','Title','WorkEmail','WorkPhone','Manager','AlternateContact','RoleDescription','PictureURL'; # Specify output file $outfile = 'UserProfiles.csv'; #Specify delimiter character (ie not one that might appear in your user profile data) $delim = '^'; # Specify Shared Service Provider that contains the user profiles. $SSP = "SharedServices"; [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles") # Function: Get-UserProfiles # Description: return a UserProfileManager object containing all user profiles # Parameters: SSPName SSPName # Function global:Get-UserProfiles($SSPName) { $ServerContext = [Microsoft.Office.Server.ServerContext]::GetContext($SSPName); $UPManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServerContext); return $UPManager.GetEnumerator(); } $profiles = Get-UserProfiles($SSP); #Initialise Output file with headings $header = [string]::join($delim,$arProperties); Write-Output $header | Out-File $outfile #Output the specified properties for each $profiles | ForEach-Object { foreach($p in $arProperties){ # Get the property name and add it to a new array, which will be used to construct the result string $arProfileProps += $_.Item($p); } $results = [string]::join($delim,$arProfileProps); # Get rid of any newlines that may be in there. $CleanResults = $results.Replace("`n",''); Write-Output $CleanResults Remove-Variable -Name arProfileProps } | Out-File -Append $outfile 

这让我更接近了一点。 我仍然非常喜欢通过遍历所有configuration文件属性的脚本,并更加优雅地将它们放到CSV或XML文件中。 这会做现在。