<?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>People, Technology, Connected</title>
	<atom:link href="http://www.davidbolton.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.davidbolton.com</link>
	<description>A Discourse on Technology</description>
	<lastBuildDate>Sat, 25 May 2013 02:12:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>ICACLS and Server 2008 R2</title>
		<link>http://www.davidbolton.com/?p=232</link>
		<comments>http://www.davidbolton.com/?p=232#comments</comments>
		<pubDate>Wed, 01 Aug 2012 17:27:29 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=232</guid>
		<description><![CDATA[Contrary to some documentation out there in the internet ethers (how great icacls is compared to its predecessor, cacls), icacls has a serious flaw in bulk processing on server 2008 r2. As a followup to a post I wrote a year ago , I discovered that icacls does not set permissions properly when scripting acl&#8217;s in bulk. [...]]]></description>
				<content:encoded><![CDATA[<p>Contrary to some documentation out there in the internet ethers (how great icacls is compared to its predecessor, cacls), icacls has a serious flaw in bulk processing on server 2008 r2. As a followup to a <a href="http://www.davidbolton.com/?p=169" target="_blank">post I wrote a year ago</a> , I discovered that icacls does not set permissions properly when scripting acl&#8217;s in bulk.  Here&#8217;s my scenario:</p>
<p>Last July I changed employers, and one of my tasks in the past year was to deploy a new file server to replace a very badly configured, poorly deployed virtual machine file server. In addition, I discovered five different naming conventions were used when previous accounts were created in Active Directory. So, to get to a place where I can also prepare for an Exchange migration, I had a lot of account clean up.<span id="more-232"></span></p>
<p>Step one was to establish a new naming convention. What&#8217;s worked well in the past is firtname.lastname, so obviously home folders would be named identically. When I ran my original cacls script, server 2008 r2 offered me a wonderful alert: &#8220;cacls is now deprecated, please use icacls&#8221;. Odd, I remember running cacls on server 2008, without issue. R2 is full of surprises <img src='http://www.davidbolton.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I am of the firm belief that giving users FULL access to their home folders is a really, really bad thing. I have learned over the years that 1) folks out there don&#8217;t understand why &#8220;Administrator&#8221; (or domain admins) has access to <em>their</em> private data in <em>their</em> home folder and 2) when given the power to set permissions themselves, they often remove the Administrator (or group) from their folder, wreaking havoc on backups etc. Anyway, I set MODIFY perms for all home folders for end users&#8230;</p>
<p>So, it turns out that a simple:</p>
<p>ICACLS.exe  /GRANT MyDomain\user:M /GRANT MyDomain\Domain Admins:F</p>
<p>won&#8217;t work on SOME folders. Digging in a bit, I noticed I needed the /grant:r , with the &#8220;r&#8221; meaning to &#8220;replace&#8221; the permissions if the ACL is already set for that particular user SID. Great, I thought. And off I went, only to discover that the /grant:r does not replace the ACL as advertised. This really baffled me for a bit and after an early morning awakening (yeah, I dream about this stuff sometimes), I had an epiphany.</p>
<p>In Checking the standard security tab I saw that a user still had FULL access, indicating the script did not work. But when clicking on the advanced button, there it was&#8230;the user also had a separate ACL with MODIFY access. So, to make the process work correctly, I had to break it into two separate scripts, one to remove all ACL&#8217;s assigned to the user, then add the ACL back with the correct perms. Obviously, running the below scripts should be done OFF hours, as the first one removes ALL access for users to their home folders.</p>
<p>Script 1: For /D %%I in (*) DO ICACLS.exe %%I /remove MYDOMAIN\%%I</p>
<p>Script 2: For /D %%I in (*) DO ICACLS.exe %%I /GRANT:r MYDOMAIN\%%I:(CI)(OI)M  /GRANT:r MYDOMAIN\Domain Admins:(CI)(OI)F</p>
<p>Now, I am not sure if it was my mistake in the first place when I ran a simple /GRANT or if ICACLS just doesn&#8217;t remove the ACL&#8217;s on Server 2008 R2 (as purported), but the above is what worked for me. Hope this helps someone else out there when it comes to the inconsistent processing of ICACLS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=232</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Set Individual User Permissions on Folders Based on Username</title>
		<link>http://www.davidbolton.com/?p=169</link>
		<comments>http://www.davidbolton.com/?p=169#comments</comments>
		<pubDate>Wed, 08 Jun 2011 03:15:19 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=169</guid>
		<description><![CDATA[On a recent endeavor, I needed to create 1400+ folders on a file share named staffweb (part of our domain migration). Essentially, the permissions on the staffweb folder enable www access to each individual&#8217;s published content (via IIS).  The server OS which houses the share is Server 08 R2, which was particularly frustrating at first [...]]]></description>
				<content:encoded><![CDATA[<p>On a recent endeavor, I needed to create 1400+ folders on a file share named staffweb (part of our domain migration). Essentially, the permissions on the staffweb folder enable www access to each individual&#8217;s published content (via IIS).  The server OS which houses the share is Server 08 R2, which was particularly frustrating at first because I could not use the standard xcacls.exe to set the permissions when the folders were created. Where the script worked fine on Server 03, it just wouldn&#8217;t work on Server 08. By using a combination of scripts, I accomplished the task, but ironically, I had to break out some old school scripting techniques to set the ACL&#8217;s properly. Below are both scripts&#8230;<span id="more-169"></span></p>
<p>The script to create the folders is as follows:</p>
<div>
<p style="padding-left: 60px;">ON ERROR RESUME NEXT</p>
<p style="padding-left: 60px;">&#8216;Set AD Connection Parameters, get info.<br />
Set objConnection = CreateObject(&#8220;ADODB.Connection&#8221;)<br />
objConnection.Open &#8220;Provider=ADsDSOObject;&#8221;</p>
<p style="padding-left: 60px;">Set objCommand = CreateObject(&#8220;ADODB.Command&#8221;)<br />
objCommand.ActiveConnection = objConnection<br />
objCommand.Properties(&#8220;Page Size&#8221;) = 80000</p>
<p style="padding-left: 60px;">objCommand.CommandText = _<br />
&#8220;&lt;<a href="ldap://ou=Staff,ou=District,dc=my,dc=work,dc=domain,dc=here/">LDAP://ou=Staff,ou=District,dc=my,dc=work,dc=domain,dc=here</a>&gt;;&#8221; &amp; _<br />
&#8220;(&amp;(objectCategory=person)(objectClass=user));&#8221; &amp; _<br />
&#8220;ADsPath, sAMAccountName, userAccountControl;subtree&#8221;</p>
<p style="padding-left: 60px;">Set objRecordSet = objCommand.Execute<br />
Set fso = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</p>
<p style="padding-left: 60px;">Const ADS_UF_ACCOUNTDISABLE = 2</p>
<p style="padding-left: 60px;">While Not objRecordset.EOF<br />
strUserName = objRecordset.Fields(&#8220;sAMAccountName&#8221;)<br />
strADsPath = objRecordset.Fields(&#8220;ADsPath&#8221;)</p>
<p style="padding-left: 60px;">strWebDir = &#8220;<a href="file://test/staffweb/">\\test\staffweb\</a>&#8221; &amp; strUsername<br />
intUAC = ObjRecordset.Fields(&#8220;userAccountControl&#8221;)</p>
<p style="padding-left: 60px;">if intUAC AND ADS_UF_ACCOUNTDISABLE Then<br />
Wscript.Echo strUsername &amp; &#8220;: Account Disabled&#8221;<br />
End If</p>
<p style="padding-left: 60px;">&#8216;Create Web Folder<br />
If Not fso.FolderExists(strWebDir) Then<br />
Set fldUserWebdir = fso.CreateFolder(strWebDir)<br />
Set wshShell = WScript.CreateObject(&#8220;Wscript.Shell&#8221;)</p>
<p style="padding-left: 60px;">Wscript.Echo strUsername &amp; &#8220;: Web Folder Created at &#8221; &amp; strWebDir<br />
Else<br />
Wscript.Echo strUsername &amp; &#8220;: Web Folder already exists&#8221;<br />
End If</p>
<p style="padding-left: 60px;">objRecordset.MoveNext<br />
Wend</p>
<p style="padding-left: 60px;">Wscript.Echo &#8221; &#8221;<br />
Wscript.Echo objRecordSet.RecordCount &amp; &#8221; user accounts checked.&#8221;</p>
<p style="padding-left: 60px;">objConnection.Close</p>
<p>The above script (Special thanks to JShaw) reads AD for pertinent information and creates the folders on a server named &#8220;test&#8221; and in the share named &#8220;staffweb&#8221; according to the username found. I have removed the lines where I attempt to have XCACLS set the ACL&#8217;s.</p>
<p>The next script needs to be setup as a batch file (filename.bat), set into the root of the staffweb shared folder. It matches folder names against directory names and then edits the permissions to add both the username (in this case firstname.lastname) and administrator with change and full permissions respectively. The /E flag preserves inheritance by adding, not replacing permissions. Run the script from the command prompt.</p>
<p>For /D %%I in (*) DO CACLS.exe &#8220;%%I&#8221; /T /E /P &#8220;mydomain\%%I&#8221;:C &#8220;mydomain\Administrator&#8221;:F<br />
:exit</p>
<p>That&#8217;s it, all folders are created based on usernames and permissions are set accordingly.</p>
<p><strong>UPDATE: Server 2008 R2 File Servers:</strong></p>
<p><span style="color: #000000;">CACLS is depricated in Server 2008 R2 and the above batch script no longer works. Instead, use ICACLS and adjust the script accordingly:</span></p>
<p>For /D %%I in (*) DO ICACLS.exe %%I /GRANT MyDomain\%%I:(CI)(OI)M /GRANT MyDomain\Administrator:(CI)(OI)F</p>
<p>Do read the ICACLS help file for the inheritance parameters. The above script keeps inheritance from the container (CI) and object(OI).</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Create a Shared Calendar with Published Content in Exchange 2010 SP1</title>
		<link>http://www.davidbolton.com/?p=129</link>
		<comments>http://www.davidbolton.com/?p=129#comments</comments>
		<pubDate>Mon, 02 May 2011 03:49:24 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=129</guid>
		<description><![CDATA[One item of importance for a school district is for folks at schools to be able to publish calendars to the web, either to a blog, wiki, or school site. In my attempt to track down a simple How To on the topic, I did not find the specific steps to accomplishing task, so I [...]]]></description>
				<content:encoded><![CDATA[<p>One item of importance for a school district is for folks at schools to be able to publish calendars to the web, either to a blog, wiki, or school site. In my attempt to track down a simple How To on the topic, I did not find the specific steps to accomplishing task, so I have opted to create this one. Keep in mind that this method of publishing calendar content to the web essentially replaces the legacy public folders seen in previous versions of exchange server. As part of this How To, I have added the steps to add designated editors of a shared calendar. These are the steps I followed&#8230;<span id="more-129"></span></p>
<p>Create a Room or Equipment Mailbox in the EMC</p>
<p>Allow Publishing: Go to properties of the new mailbox, then Mailbox Setting Tab, then Sharing. Change the policy to the sharing policy created using the method published here (enter URL of published Document Here)</p>
<p>Convert to a shared mailbox using EMS:</p>
<p><strong>Set-Mailbox “mailboxname”  -Type Shared</strong></p>
<p>Add Permissions:</p>
<p><strong>Add-MailboxFolderPermission –identity mailboxname:\calendar –user designatededitorusername -accessrights editor</strong></p>
<p>Repeat command substituting designated editor username accordingly</p>
<p>Enable Publishing:</p>
<p>Before performing this step, you must add the <a href="http://www.davidbolton.com/?p=146" target="_blank">customized sharing policy previously created</a>.</p>
<p><strong>Set-MailboxCalendarFolder –identity mailboxname:\calendar –detaillevel fulldetails –publishdaterangefrom oneyear –publishdaterangeto oneyear –publishenabled $true</strong></p>
<p>Check/Get the published URL:  <strong>Get-MailboxCalendarFolder mailboxname:\calendar</strong></p>
<p>Add permissions for editor to load the mailbox and alter sharing permissions or republish if necessary:</p>
<p><strong>Add-MailboxPermission –identity mailboxname –user designatedfullaccessuser –AccessRights FullAccess</strong></p>
<p>Add permissions so designated user can send links out via email:</p>
<p><strong>Add-ADPermission –identity &#8216;mailboxname&#8217; –user &#8216;designatedsendasaccessuser&#8217; –ExtendedRights &#8216;Send As&#8217;</strong></p>
<p>Once this is setup, the designated user would load the shared mailbox and publish the calendar. Once published, the URL is viewable, which can be sent out via an email.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=129</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Set Room Resource Policy so Delegates Get Properly Notified</title>
		<link>http://www.davidbolton.com/?p=136</link>
		<comments>http://www.davidbolton.com/?p=136#comments</comments>
		<pubDate>Sat, 23 Apr 2011 03:05:25 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=136</guid>
		<description><![CDATA[A recent query to the Exchange forums suggested that the documentation from Microsoft regarding Room Resource Policy with Delegates is not complete. Upon further review, I discovered the process is rather simple, but not intuitive nor well documented&#8230; Create the Resource (room mailbox, equipment mailbox). On Resource Policy Tab, select delegate, check “forward meeting requests to [...]]]></description>
				<content:encoded><![CDATA[<p>A recent query to the Exchange forums suggested that the documentation from Microsoft regarding Room Resource Policy with Delegates is not complete. Upon further review, I discovered the process is rather simple, but not intuitive nor well documented&#8230;<span id="more-136"></span></p>
<ol>
<li>Create the Resource (room mailbox, equipment mailbox).</li>
<li>On Resource Policy Tab, select delegate, check “forward meeting requests to delegates”.</li>
<li>On Resource General Tab, check the box for booking attendant.</li>
<li>On the Resource In-Policy Requests Tab, check radio buttons:
<ol>
<li>Selected Recipients (automatic approval), leave blank.</li>
<li>All Users (subject to approval)</li>
</ol>
</li>
</ol>
<p>On the Resource Out-of-Policy Requests Tab, check “Selected recipients”. Leave blank</p>
<p>*Note: My goal was to have all meeting requests forwarded properly to the delegate(s) for approval, whether it&#8217;s in policy or out-of-policy. The above steps accomplish this however, if you desire to have only out-of-resource policy requests forwarded to a delegate AND all in-policy requests auto-accept, then use the Microsoft suggested defaults.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=136</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Basics of Internet Calendar Sharing in Exchange 2010 SP1</title>
		<link>http://www.davidbolton.com/?p=146</link>
		<comments>http://www.davidbolton.com/?p=146#comments</comments>
		<pubDate>Wed, 16 Mar 2011 03:05:11 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=146</guid>
		<description><![CDATA[One very important aspect of calendar management is the ability to have globally shared calendar information available for publication to the internet or an intranet. To accomplish this, certain requirements must be met prior to publicly or privately  &#8220;publishing&#8221; shared calendar information. The following are some basics that an Exchange administrator will need to know in order [...]]]></description>
				<content:encoded><![CDATA[<p>One very important aspect of calendar management is the ability to have globally shared calendar information available for publication to the internet or an intranet. To accomplish this, certain requirements must be met prior to publicly or privately  &#8220;publishing&#8221; shared calendar information. The following are some basics that an Exchange administrator will need to know in order to successfully create publishable calendar content.<span id="more-146"></span></p>
<p>With Exchange 2010 SP1, a new virtual directory was added specifically for calendar sharing and the default settings should be set accordingly. To verify the settings prior to proceeding, open an EMS and type:</p>
<p><strong>Get-OwaVirtualDirectory |select name, server, calendar*</strong></p>
<p>This will provide the output verifying that all CAS servers have the CalendarPublishingEnabled flag set to True.</p>
<p>Next, an Internet Calendar Sharing Policy needs to be created:</p>
<ol>
<li>Open EMC, go to Organization Configuration, Mailbox</li>
<li>Click the Sharing Policies Tab</li>
<li>From the right Actions pane, select &#8220;New Sharing Policy&#8230;&#8221;</li>
<li>The New Sharing Policy Wizard starts. Give the new policy a name, then click the Add button in the Assign Actions section. By default the checkbox to enable the policy is set.</li>
<li>The Add Action to Sharing Policy Domain window pops up</li>
<li>**This is important** -type Anonymous in the top line, and then select &#8220;Calendar sharing with free/busy information plus subject, location, and body.</li>
</ol>
<p><a href="http://www.davidbolton.com/wp-content/uploads/2011/06/SharingPolicy-31.png"><img class="size-full wp-image-150 alignnone" title="SharingPolicy 3" src="http://www.davidbolton.com/wp-content/uploads/2011/06/SharingPolicy-31.png" alt="" width="462" height="235" /></a></p>
<p>Click Ok, then next, and next on the New Sharing Policy Wizard window. The policy will be created.</p>
<p>Next, open the properties on any global shared calendar  you want to enable publishing on under Recipient Configuration.</p>
<p>Select the <strong>Mailbox Setting</strong> tab and then <strong>Sharing.</strong></p>
<p>Apply the sharing policy that you just created by clicking Browse&#8230; and select it from the list.</p>
<p> <a href="http://www.davidbolton.com/wp-content/uploads/2011/06/sharingpolicy41.png"><img class="size-full wp-image-153 alignnone" title="sharingpolicy4" src="http://www.davidbolton.com/wp-content/uploads/2011/06/sharingpolicy41.png" alt="" width="441" height="522" /></a></p>
<p>That&#8217;s it, you have now created a new internet calendar sharing policy and have assigned it to a global shared calendar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=146</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to set access rights for calendars in Exchange 2010</title>
		<link>http://www.davidbolton.com/?p=122</link>
		<comments>http://www.davidbolton.com/?p=122#comments</comments>
		<pubDate>Sat, 08 Jan 2011 12:00:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=122</guid>
		<description><![CDATA[Since most of our users at work run on Macintosh, we have them use OWA exclusively. One caveat to doing so revealed a hope-to-be-resolved-soon bug which no doubt other OWA users will observe along the way-a user cannot share their calender with permissions greater than &#8220;Reviewer&#8221;. The workaround at the moment requires server-side resolution, which [...]]]></description>
				<content:encoded><![CDATA[<p>Since most of our users at work run on Macintosh, we have them use OWA exclusively. One caveat to doing so revealed a hope-to-be-resolved-soon bug which no doubt other OWA users will observe along the way-a user cannot share their calender with permissions greater than &#8220;Reviewer&#8221;. The workaround at the moment requires server-side resolution, which from a sysadmin&#8217;s perspective, is not welcomed overhead in managing an already expansive system such as Exchange. It is easy enough however, to extend permissions on user&#8217;s calendars. The following is an outline to do just that:</p>
<p><span id="more-122"></span></p>
<p>Cmdlets used:</p>
<p><strong>Get-MailboxFolderPermission</strong></p>
<p><strong>Add-MailboxFolderPermission</strong></p>
<p><strong>Remove-MailboxFolderPermission</strong>-(this cmdlet is used to remove an existing coworker who was added before discovering it cannot be done in OWA).</p>
<p style="padding-left: 30px;">Examples:</p>
<p style="padding-left: 30px;"><strong>Get-MailboxFolderPermission –identity david.bolton:\calendar</strong></p>
<p style="padding-left: 30px;"><strong>Remove-MailboxFolderPermission –identity david.bolton:\calendar –user my.coworker</strong></p>
<p style="padding-left: 30px;"><strong>Add-MailboxFolderPermission –identity david.bolton:\calendar –user my.coworker –accessrights editor</strong></p>
<p style="padding-left: 30px;">AccessRights Parameter = roles assigned</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;"><strong>Roles Assigned:</strong></span></p>
<ul>
<li> 
<ul>
<li><strong>Owner</strong>   CreateItems, ReadItems, CreateSubfolders, FolderOwner, FolderContact, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems</li>
<li><strong>PublishingEditor</strong>   CreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems</li>
<li><strong>Editor</strong>   CreateItems, ReadItems, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems</li>
<li><strong>PublishingAuthor</strong>   CreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, DeleteOwnedItems</li>
<li><strong>Author</strong>   CreateItems, ReadItems, FolderVisible, EditOwnedItems, DeleteOwnedItems</li>
<li><strong>NonEditingAuthor</strong>   CreateItems, ReadItems, FolderVisible</li>
<li><strong>Reviewer</strong>   ReadItems, FolderVisible</li>
<li><strong>Contributor</strong>   CreateItems, FolderVisible</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=122</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom MMC&#8217;s on Terminal Server</title>
		<link>http://www.davidbolton.com/?p=108</link>
		<comments>http://www.davidbolton.com/?p=108#comments</comments>
		<pubDate>Fri, 07 Jan 2011 19:09:52 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=108</guid>
		<description><![CDATA[I am a huge believer in managing Active Directory from both a centralized and decentralized mode. I work in an environment where we have a 9 to 1 ratio of Macintosh versus PC based systems. We needed to give specific people, specific access to parts of Active Directory so they could essentially fill the role [...]]]></description>
				<content:encoded><![CDATA[<p>I am a huge believer in managing Active Directory from both a centralized and decentralized mode. I work in an environment where we have a 9 to 1 ratio of Macintosh versus PC based systems. We needed to give specific people, specific access to parts of Active Directory so they could essentially fill the role of helpdesk (since this position no longer exists in our department). Without being able to give them an ADUC client (Mac), we needed to come up with another solution. Creating a terminal server with customized MMC&#8217;s which launch at login and according to their group is what we were after. The following is the quick and easy setup of such.<span id="more-108"></span></p>
<p>The first piece of this process was to get the terminal server up and running. Once that was done (in short time thanks to our VMWare environment) and proper permissions were setup for access to it, I moved on to create the custom MMC&#8217;s. When I say custom, I mean an MMC that gives the user an interface that shows only that section of Active Directory which they need access to in order to complete specific tasks such as disable accounts, reset passwords, or view properties of an account. I will not go into details here on how to create customized MMC&#8217;s as there is a ton of information out there on the net for such. However, I will say that I simply author an MMC in a new taskpad view and assign only those tasks needed for the individuals, then lock the entire MMC down at completion.</p>
<p>Once the set of MMC&#8217;s was created for multiple folks at multiple locations, I needed a way to launch only that MMC on the terminal server when they login. For each location, an assigned user should get only their MMC. Thus, a simple script to run at login, called from the local group policy was the solution. The following is the script syntax, customize for your situation:</p>
<p style="padding-left: 30px;"><code><br />
@echo off<br />
REM Launch MM</code>C according to user&#8217;s group membership</p>
<p style="padding-left: 30px;">:SITE1<br />
ifmember &#8220;site1 student admins&#8221;<br />
if not errorlevel 1 goto SITE2<br />
start c:\MMCs\SITE1.msc</p>
<p style="padding-left: 30px;">:SITE2<br />
ifmember &#8220;site2 student admins&#8221;<br />
if not errorlevel 1 goto SITE3<br />
start c:\\MMCs\SITE2.msc</p>
<p style="padding-left: 30px;">:SITE3<br />
ifmember &#8220;site3 student admins&#8221;<br />
if not errorlevel 1 goto TechSvcs<br />
start c:\\MMCs\SITE3.msc</p>
<p style="padding-left: 30px;">:TechSvcs<br />
ifmember &#8220;technology services staff&#8221;<br />
if not errorlevel 1 goto quit<br />
start c:\\MMCs\Tech.msc<br />
start c:\\MMCs\AdminGuest.msc</p>
<p style="padding-left: 30px;">:quit</p>
<p>As you can see, you can call multiple MMC&#8217;s at one time (the tech services section), giving folks further access into Active Directory as needed. The last piece of this is to name this script something like LauchMMC.bat, and add it as a login script (User Configuration) through the local Group Policy editor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=108</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php5-filter (missing header) issue resolved&#8230;</title>
		<link>http://www.davidbolton.com/?p=97</link>
		<comments>http://www.davidbolton.com/?p=97#comments</comments>
		<pubDate>Tue, 28 Dec 2010 00:32:14 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=97</guid>
		<description><![CDATA[On a recent portupgrade I received some dreaded ***stop error***&#8217;s regarding php5-filter and php5-zip ports. The output was as follows: &#8220;Skipping &#8216;lang/php5-extensions&#8217; (php5-extensions-1.3) because a requisite package &#8216;php5-zip-5.2.12&#8242; (archivers/php5-zip) failed (specify -k to force) ** Listing the failed packages (-:ignored / *:skipped / !:failed) - devel/automake110 (port directory error) - devel/automake19 (port directory error) ! [...]]]></description>
				<content:encoded><![CDATA[<p>On a recent portupgrade I received some dreaded ***stop error***&#8217;s regarding php5-filter and php5-zip ports. The output was as follows:</p>
<p style="padding-left: 30px;">&#8220;Skipping &#8216;lang/php5-extensions&#8217; (php5-extensions-1.3) because a requisite package &#8216;php5-zip-5.2.12&#8242; (archivers/php5-zip)<br />
failed (specify -k to force)<br />
** Listing the failed packages (-:ignored / *:skipped / !:failed)<br />
- devel/automake110 (port directory error)<br />
- devel/automake19 (port directory error)<br />
! devel/autoconf (autoconf-2.62) (install error)<br />
* devel/autoconf (autoconf-2.67)<br />
* lang/php5 (php5-pcre-5.2.12)<br />
* lang/php5 (php5-spl-5.2.12)<br />
! security/php5-filter (php5-filter-5.2.12) (missing header)<br />
! archivers/php5-zip (php5-zip-5.2.12) (missing header)<br />
* lang/php5-extensions (php5-extensions-1.3)&#8221;</p>
<p>At first, I needed to resolve the autoconf issue and a pkg_info *auto yeilded some interesting information-four different versions of each with separate wrappers. Apparently devel/autotools has had some ongoing cleanup taking place, which AHEM (yes, I make bonehead sysadmin mistakes too <img src='http://www.davidbolton.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , I failed to catch while reading the /usr/ports/UPDATING file prior to running portugrade&#8230;<span id="more-97"></span></p>
<p>Specfically, the UPDATING file reads:</p>
<p style="padding-left: 30px;">&#8220;IMPORTANT: if you have either devel/autoconf-wrapper or<br />
  devel/automake-wrapper installed on your system (and you most likely do)<br />
  PLEASE update these ports to their new versions before updating anything<br />
  else &#8212; Bad Things[tm] are likely to happen otherwise.&#8221;</p>
<p>So off to Google I went in an effort to resolve the issue. Well, not much help there so based on my past experience, I know autoconf/automake are required packages on many other ports. I uninstalled the autoconf and automake ports and will let package dependencies resolve the issue on future upgrades.</p>
<p>After dealing with autoconf/automake, it was on to the php5 errors. Noticing that the errors originally had to do with pcre, and after checking the /usr/ports/MOVED file I noticed this little entry on php5-filter:</p>
<p style="padding-left: 30px;">&#8220;security/pecl-filter|security/php5-filter|2008-12-11|Now bundled in php5&#8243;.</p>
<p>Hmmm, maybe I am on to something here. I noticed also that pecl-filter was its own package previously (pkg_info) and listed as such.</p>
<p>To finally resolve the pcre and pecl-filter issue, and to get to the point of fixing the php5 issue, I did the following:</p>
<ol>
<li>
<div style="padding-left: 30px;">pkg_delete -f pecl-fileinfo-1.0.4</div>
</li>
<li>
<div style="padding-left: 30px;">pkg_delete -f php5*</div>
</li>
<li>
<div style="padding-left: 30px;">accordingly I added <strong>WITH_BUNDLED_PCRE=”YES” </strong>in my make.conf file (<a href="http://forums.freebsd.org/showthread.php?t=13191">http://forums.freebsd.org/showthread.php?t=13191</a>)</div>
</li>
<li>
<div style="padding-left: 30px;">cd /usr/local/</div>
</li>
<li>
<div style="padding-left: 30px;">rm /etc/php.*</div>
</li>
<li>
<div style="padding-left: 30px;">rm -r lib/php/</div>
</li>
<li>
<div style="padding-left: 30px;">rm -r /include/php/</div>
</li>
<li>
<div style="padding-left: 30px;">cd /usr/ports/lang/php5/</div>
</li>
<li>
<div style="padding-left: 30px;">make rmconfig</div>
</li>
<li>
<div style="padding-left: 30px;">make install clean, selecting options I needed for re-install of php5</div>
</li>
<li>
<div style="padding-left: 30px;">cd ../php5-extensions/</div>
</li>
<li>
<div style="padding-left: 30px;">make install clean</div>
</li>
<li>
<div style="padding-left: 30px;">and finally, pkgdb -Fu to remove any outstanding port dependencies (which no fix was necessary)</div>
</li>
</ol>
<p>No further errors were thrown and our production blog server is back to being  very happy <img src='http://www.davidbolton.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=97</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RDCman &#8211; Great New Addition To The Sysadmin&#8217;s Toolbox</title>
		<link>http://www.davidbolton.com/?p=89</link>
		<comments>http://www.davidbolton.com/?p=89#comments</comments>
		<pubDate>Wed, 16 Jun 2010 03:14:30 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=89</guid>
		<description><![CDATA[While polling the microsoft exchange team site recently, I found this post about an internal tool the dev team has available to them, which recently has been made public. After a quick download and setup of RDCman, I was off and running. I exported my current list of servers straight out of &#8220;remote desktops&#8221; tool and directly [...]]]></description>
				<content:encoded><![CDATA[<p>While polling the microsoft exchange team site recently, I found this post about an internal tool the dev team has available to them, which recently has been made public. After a quick download and setup of RDCman, I was off and running. I exported my current list of servers straight out of &#8220;remote desktops&#8221; tool and directly into rdcman. Once some intitial editing was done for credentials to each server (we have two domains, each with different admin credentials), it was time to check it out. <span id="more-89"></span> </p>
<p>The first thing I noticed was the fact that you can setup different groups (to be used as a lab manager) or you can add an entire server list as I did. A great feature of this tool is that credentials can be inherited directly from the top of the server list (global), as well as local resource settings, gateway, file, connection, security, and display settings.<br />
 <br />
This tool really rocks, and I probably won&#8217;t ever go back to using the standard &#8220;remote desktops&#8221; tool. I love the thumbnail view and at a moments glance can view all servers that are either in a connected or disconnected state, as you can see from this screenshot:<br />
<a href="http://www.davidbolton.com/wp-content/uploads/2010/06/rdcman.png"><img class="alignleft size-full wp-image-90" title="rdcman" src="http://www.davidbolton.com/wp-content/uploads/2010/06/rdcman.png" alt="" width="1024" height="669" /></a></p>
<p>One quirk I noticed though is that in thumbnail view you can actually click inside an open server, which is live in thumbnail view. The problem I see with this is that one could easily open, close, or delete items without being fully aware of their actions. I quickly learned this as my first inclination was to double-click to expand the thumbnail window and noticed I was about to remove a database! The resolution is simply to click on the live server in the left pane.</p>
<p>Check out some more details here: <a href="http://msexchangeteam.com/archive/2010/06/11/455115.aspx">http://msexchangeteam.com/archive/2010/06/11/455115.aspx</a> </p>
<p>and you can download the tool here:  <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4603c621-6de7-4ccb-9f51-d53dc7e48047&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=4603c621-6de7-4ccb-9f51-d53dc7e48047&amp;displaylang=en</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=89</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Losing a whole year&#8230;</title>
		<link>http://www.davidbolton.com/?p=86</link>
		<comments>http://www.davidbolton.com/?p=86#comments</comments>
		<pubDate>Sun, 16 May 2010 03:35:12 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.davidbolton.com/?p=86</guid>
		<description><![CDATA[Well, I can&#8217;t believe it has been an entire year since I last posted on this blog. I have a ton of learning to convey and just haven&#8217;t had the time. On a personal note, I began taking care of two parents who were both diagnosed with Alzheimer&#8217;s back in mid 2008.  Trying to keep up [...]]]></description>
				<content:encoded><![CDATA[<p>Well, I can&#8217;t believe it has been an entire year since I last posted on this blog. I have a ton of learning to convey and just haven&#8217;t had the time. On a personal note, I began taking care of two parents who were both diagnosed with Alzheimer&#8217;s back in mid 2008.  Trying to keep up with my own family (wife and two kids) and add to that all of my parent&#8217;s affairs, well my life has just been crazy. Thinking about blogging, but just never getting to it.</p>
<p>The VMWare cluster implementation is complete and I will add some posts about that. As I move towards a full IMAP to Exchange 2010 implementation, I will add posts regarding those processes as well.  I moved from my iPhone to Droid recently and quite honestly, will probably never go back . I will post my findings on that as well.</p>
<p>Stay tuned&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbolton.com/?feed=rss2&#038;p=86</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
