<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chris Hernandez's Blog : User Profiles</title><link>http://blogs.technet.com/chris_hernandez/archive/tags/User+Profiles/default.aspx</link><description>Tags: User Profiles</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Enumerating thru User Profiles</title><link>http://blogs.technet.com/chris_hernandez/archive/2007/10/04/enumerating-thru-user-profiles.aspx</link><pubDate>Thu, 04 Oct 2007 21:21:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2108310</guid><dc:creator>chrishe</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/chris_hernandez/comments/2108310.aspx</comments><wfw:commentRss>http://blogs.technet.com/chris_hernandez/commentrss.aspx?PostID=2108310</wfw:commentRss><description>&lt;P&gt;SharePoint Server allows user profile data to be imported from various sources such as the Active Directory, LDAP, and using a Business Data Catalog (BDC) connection to almost any data source that contains user info.&lt;/P&gt;
&lt;P&gt;There may be a need to enumerate thru all the user profiles once the data has been imported and perform actions on each user profile. &lt;/P&gt;
&lt;P&gt;Here is&amp;nbsp;a simple code example that does&amp;nbsp;this using an enumerator in C#:&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SPSite site = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; SPSite(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"http://localhost"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;ServerContext&lt;/FONT&gt;&lt;FONT size=2&gt; context = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;ServerContext&lt;/FONT&gt;&lt;FONT size=2&gt;.GetContext(site);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;UserProfileManager&lt;/FONT&gt;&lt;FONT size=2&gt; upm = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;UserProfileManager&lt;/FONT&gt;&lt;FONT size=2&gt;(context);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;UserProfile&lt;/FONT&gt;&lt;FONT size=2&gt; currentProfile;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;IEnumerator&lt;/FONT&gt;&lt;FONT size=2&gt; enumProfs = upm.GetEnumerator();&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;bool&lt;/FONT&gt;&lt;FONT size=2&gt; continueEnum = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;true&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;while&lt;/FONT&gt;&lt;FONT size=2&gt; (continueEnum)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;try&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;continueEnum = enumProfs.MoveNext();&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;catch&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Exception&lt;/FONT&gt;&lt;FONT size=2&gt; e)&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Console&lt;/FONT&gt;&lt;FONT size=2&gt;.WriteLine(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"EXCEPTION in enum - try to move to next: "&lt;/FONT&gt;&lt;FONT size=2&gt; + e.ToString());&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;continueEnum = enumProfs.MoveNext();&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;currentProfile = (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;UserProfile&lt;/FONT&gt;&lt;FONT size=2&gt;)enumProfs.Current;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT color=#008000 size=2&gt;
&lt;P&gt;// do some action on each currentProfile&lt;/P&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Note that I put the try/catch block to handle the scenario that as you are running the tool any profiles get modified since the import was performed. This would throw an exception and that can be handled any way perferred including what I've done which is simply to write the error to the console and continue.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2108310" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/SharePoint+Server/default.aspx">SharePoint Server</category><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/User+Profiles/default.aspx">User Profiles</category></item></channel></rss>