Yes, its finally true. You can finally get your hands on Managing Active Directory with Windows PowerShell: TFM. The book is being printed so you can get your copy today. You can order it today at ScriptingOutpost.com in both print and ebook format. Or if you prefer the best of both worlds get both as a bundle.
Table of Contents
- PowerShell Crash Course
- PowerShell Extras
- Managing Local Computer Accounts
- Managing Local Groups
- Managing Active Directory with PowerShell Fundamentals
- Managing Active Directory Users
- Active Directory Password Management
- Managing Active Directory Contacts
- Managing Active Directory Groups
- Managing Active Directory Computer Accounts
- Managing Organizational Units and Containers
- Managing Group Policy
- Active Directory Security and Permissions
- Managing Active Directory with WMI and PowerShell
- Using the Active Directory PSDrive Provider
- Managing Active Directory Infrastructure
- (Appendix A) Managing Active Directory with PowerGUI
You can also download a sample chapter. This title is also available at Amazon.com.
You don’t have to wait for Microsoft before you can begin managing Active Directory with PowerShell. You can start today.
My September Mr. Roboto column covers a PowerShell script you can use to create a domain password report. I also demo’d the script at the NYC Techmentor conference this past week. Since then I realized a mistake in the way that I laid out the script. I had nested a function within another function which worked fine for most of the script when I called the outer function. However, I was also calling the nested function directly which was causing the error. The solution was to move the nested function and make it the first function in the script. This way it can be used by the other function and the rest of the script.
I’ve posted an updated version of the script at http://www.jdhitsolutions.com/scripts in the Mr. Roboto section. It will have a 1.1 version number.
Please be aware this isn’t the speediest of scripts and as with all scripts, make sure you test in a non-production environment first.
In the past I’ve posted a collection of command one-liners that get a ton of work done with (relatively) minimal effort. Many of these have come from Wayne Martin. I’ve been behind in my blogging while book writing, but I wanted to make sure you checked out his latest list at:
The registration deadline for the first Techmentor conference of the year is almost upon us. I’ll be doing sessions on using Powershell to manage Active Directory, PowerShell and WMI, Logon Scripts and more. Plus, I’m always happy to hang out and chat. I always have a great time. Hope to see you there.
If you haven’t already registered for TechMentor San Francisco, you can receive a $695 discount on the Gold Passport if you register using priority code TPHIC. More at www.techmentorevents.com/sf. But hurry because the deadline is almost here.
A few of my recent Mr. Roboto columns have been about group auditing. I first published an HTA that would report on group membership last December. Astute reader Matt V. found a bug with the way nested group memberships were being reported. Or in this case, not being reported. It turns out that if a group was a member of one other group, that membership was not reported. But if the group was nested in 2 or more groups then you’d see all the nested groups. After a little debugging I found my goof. I used ADSI to get a reference to the specified group:
<span class="kwrd">Set</span> objGroup=GetObject(<span class="str">"LDAP://"</span> & strDN)
strDN would have a value like CN=Sales,OU=Groups,DC=Mycompany,DC=local. My mistake was in assuming that the MemberOf property would always be a collection so I was using a ForEach construct. But it is only a collection if there is more than one group. So I modified the code:
<span class="kwrd">If</span> IsArray(objGroup.MemberOf) <span class="kwrd">Then</span><br /> Trace <span class="str">"MemberOf is a collection"</span><br /> <span class="kwrd">For</span> <span class="kwrd">Each</span> member <span class="kwrd">In</span> objGroup.MemberOf<br /> Trace <span class="str">"found member of "</span> & member<br /> strMemberOf=strMemberof & <span class="str">" "</span> & member & VbCrLf<br /> <span class="kwrd">Next</span><br /><span class="kwrd">Else</span><br /> Trace <span class="str">"found member of "</span> & objGroup.MemberOf<br /> strMemberOf=strMemberof & <span class="str">" "</span> & objGroup.MemberOf & vbcrlf<br /><span class="kwrd">End</span> If
Because I used the same code in a followup article where I released a command line version of the tool, I had to modify that tool as well. The above code snippet is actually from the WSF version.
Anyway, both versions have now been updated and are available for download from the Mr. Roboto section of my script library. Thank you Matt for keeping me on my toes.
Technorati Tags: Mr Roboto
, ADSI, HTA