<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aren Cambre&#039;s Blog &#187; Sitecore</title>
	<atom:link href="http://arencambre.com/blog/category/technology/sitecore-technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://arencambre.com/blog</link>
	<description>Technology, politics, and stuff</description>
	<lastBuildDate>Fri, 16 Mar 2012 20:59:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Show all Sitecore Active Directory users</title>
		<link>http://arencambre.com/blog/2011/12/23/show-all-sitecore-active-directory-users/</link>
		<comments>http://arencambre.com/blog/2011/12/23/show-all-sitecore-active-directory-users/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 22:51:15 +0000</pubDate>
		<dc:creator>Aren Cambre</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://arencambre.com/blog/?p=1908</guid>
		<description><![CDATA[I manage a Sitecore installation that&#8217;s integrated with an enterprise Active Directory. We have over 11,000 accounts in our Active Directory. I needed a list of the Sitecore users, who are only a small percentage of the 11,000. We have &#8230; <a href="http://arencambre.com/blog/2011/12/23/show-all-sitecore-active-directory-users/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I manage a Sitecore installation that&#8217;s integrated with an enterprise Active Directory.</p>
<p>We have over 11,000 accounts in our Active Directory. I needed a list of the Sitecore users, who are only a small percentage of the 11,000.</p>
<p>We have nothing in Active Directory that sets them apart, like group membership.</p>
<p>We architected our solution so that users are never assigned directly to items; users are members of Sitecore roles, and we assign Sitecore roles to items. All I have to do is rifle through all my Sitecore roles.</p>
<p>So how do I find my users? It took a little C#. Here&#8217;s the core code:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">var roles <span style="color: #008000;">=</span> Sitecore<span style="color: #008000;">.</span><span style="color: #0000FF;">Security</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Domains</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Domain</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetDomain</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;sitecore&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetRoles</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var role <span style="color: #0600FF; font-weight: bold;">in</span> roles<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>var roleMember <span style="color: #0600FF; font-weight: bold;">in</span> Sitecore<span style="color: #008000;">.</span><span style="color: #0000FF;">Security</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Accounts</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RolesInRolesManager</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetRoleMembers</span><span style="color: #008000;">&#40;</span>role, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>roleMember<span style="color: #008000;">.</span><span style="color: #0000FF;">AccountType</span> <span style="color: #008000;">==</span> AccountType<span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            var userObject <span style="color: #008000;">=</span> Sitecore<span style="color: #008000;">.</span><span style="color: #0000FF;">Security</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Accounts</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FromName</span><span style="color: #008000;">&#40;</span>roleMember<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span>, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">// only adding SMU domain users</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>userObject<span style="color: #008000;">.</span><span style="color: #0000FF;">Domain</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;myActiveDirectoryDomain&quot;</span><span style="color: #008000;">&#41;</span>
                AddUserToList<span style="color: #008000;">&#40;</span>userObject<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>This gets all Sitecore domain groups and extracts all users who are a member of my corporate domain. Of course, you&#8217;ll replace <strong>myActiveDirectoryDomain</strong> with your own domain name.</p>
<p>I created a separate <strong>AddUserToList</strong> method to handle adding these items to a <a href="http://msdn.microsoft.com/en-us/library/xfhwa508.aspx">Dictionary</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> AddUserToList<span style="color: #008000;">&#40;</span>User user<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>_users<span style="color: #008000;">.</span><span style="color: #0000FF;">ContainsKey</span><span style="color: #008000;">&#40;</span>user<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        _users<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span>user<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span>,user<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>After the core code runs, you&#8217;ll need to code your own stuff to spit out what&#8217;s in the dictionary.</p>
<p>Here&#8217;s what I used:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>var user <span style="color: #0600FF; font-weight: bold;">in</span> _users<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    var row <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> TableRow<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    OutputTable<span style="color: #008000;">.</span><span style="color: #0000FF;">Rows</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span>row<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    row<span style="color: #008000;">.</span><span style="color: #0000FF;">Cells</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> TableCell <span style="color: #008000;">&#123;</span> Text <span style="color: #008000;">=</span> user<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Profile</span><span style="color: #008000;">.</span><span style="color: #0000FF;">UserName</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    row<span style="color: #008000;">.</span><span style="color: #0000FF;">Cells</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> TableCell <span style="color: #008000;">&#123;</span> Text <span style="color: #008000;">=</span> user<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Profile</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FullName</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    row<span style="color: #008000;">.</span><span style="color: #0000FF;">Cells</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> TableCell <span style="color: #008000;">&#123;</span> Text <span style="color: #008000;">=</span> user<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Profile</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Email</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>user<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Profile</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FullName</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        row<span style="color: #008000;">.</span><span style="color: #0000FF;">CssClass</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;alert&quot;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    var rolesCell <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> TableCell<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>var role <span style="color: #0600FF; font-weight: bold;">in</span> RolesInRolesManager<span style="color: #008000;">.</span><span style="color: #0000FF;">GetRolesForUser</span><span style="color: #008000;">&#40;</span>user<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span>, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>role<span style="color: #008000;">.</span><span style="color: #0000FF;">Domain</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;sitecore&quot;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            rolesCell<span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span> <span style="color: #008000;">+=</span> <span style="color: #666666;">&quot;
 &quot;</span> <span style="color: #008000;">+</span> role<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    rolesCell<span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> rolesCell<span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Substring</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">7</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    row<span style="color: #008000;">.</span><span style="color: #0000FF;">Cells</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span>rolesCell<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Note that I already had a Table named OutputTable on my <strong>ASPX</strong> page.</p>
<p>Tadaa! The result is a list of all my domain members who are Sitecore users.</p>
]]></content:encoded>
			<wfw:commentRss>http://arencambre.com/blog/2011/12/23/show-all-sitecore-active-directory-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerShell&#8217;s 248 or 260 character limit path bug</title>
		<link>http://arencambre.com/blog/2010/07/09/powershells-248-or-260-character-limit-path-bug/</link>
		<comments>http://arencambre.com/blog/2010/07/09/powershells-248-or-260-character-limit-path-bug/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 14:38:32 +0000</pubDate>
		<dc:creator>Aren Cambre</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://arencambre.com/blog/?p=1134</guid>
		<description><![CDATA[Thanks to stupid, old code, Microsoft&#8217;s PowerShell breaks on file or directory paths longer than 248 characters. PowerShell reuses other code that maintains compatibility with very old software that can&#8217;t understand paths with more than 260 characters. (I don&#8217;t know &#8230; <a href="http://arencambre.com/blog/2010/07/09/powershells-248-or-260-character-limit-path-bug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thanks to stupid, old code, Microsoft&#8217;s <a href="http://en.wikipedia.org/wiki/Windows_PowerShell">PowerShell</a> breaks on file or directory paths longer than 248 characters. PowerShell reuses other code that maintains compatibility with very old software that can&#8217;t understand paths with more than 260 characters. (I don&#8217;t know how 260 drops to 248 in PowerShell, but <a href="http://www.vistax64.com/powershell/61657-embarrassing-limitation-powershell.html">it does</a>.)</p>
<p>Amazingly, in the first comment in a <a href="https://connect.microsoft.com/PowerShell/feedback/details/276235/path-length-limitations?wa=wsignin1.0">bug report</a>, Microsoft dodges the question and passes the buck.</p>
<p>I hit this bug when working with a Sitecore web site. For example, I have a path like this:</p>
<p style="padding-left: 30px;"><strong>C:\XXXXXXXXXXXXXXX\raw\WebSite\App_Data\MediaFiles\{11111111-1111-1111-1111-111111111111}\{3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1}\{15451229-7534-44EF-815D-D93D6170BFCB}\{700C2C14-6082-4378-AA43-821E8422E9BE}\{6507E0E5-6CF2-4342-A11F-68F787B32EA3}Boulevard.jpg</strong></p>
<p>That is 259 characters. I can&#8217;t delete it with PowerShell&#8217;s <a href="http://technet.microsoft.com/en-us/library/ee176938.aspx"><strong>Remove-Item</strong></a> command.</p>
<p>Fortunately, there is a workaround: use legacy command prompt tools. In my case, I am trying to remove everything below <strong>C:\XXXXXXXXXXXXXXX\raw\</strong>, so I can use this command in PowerShell:</p>
<pre style="padding-left: 30px;"><strong>cmd /c rmdir C:\XXXXXXXXXXXXXXX\raw\ /s/q</strong></pre>
<p>But I shouldn&#8217;t have to do this. There is no reason that PowerShell can&#8217;t delete files with more than 248 character paths.</p>
]]></content:encoded>
			<wfw:commentRss>http://arencambre.com/blog/2010/07/09/powershells-248-or-260-character-limit-path-bug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 2.284 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-19 03:45:46 -->

