I’m trying out a new Live Write plugin for Amazon. Here is a list of books I have currently authored or co-authored. This list will continue to grow as I’m working on a new book now about managing Active Directory with PowerShell.
I hope you’ll check them out.
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.
I will be doing a live 2 day VBScript class this fall in Las Vegas (Oct. 22 and 23). I’ll be covering ADSI, WMI, HTAs, WSF and more. This is a class for experienced VBScripters who want to take it to the next level. This is a hands on class with with labs and one on one attention.
This class is actually part of a week long training session. The rest of the week is PowerShell taught by PowerShell MVP (and my occasional co-author) Don Jones. You can take either my 2 day VBScript, Don’s 3 day PowerShell course or the full week. If you take the full week you also get invited to a gourmet dinner which I’m sure will be a one of Vegas’ fine restaurants.
You can learn more and register at http://www.scriptingtraining.com/ILT/schedule.asp.
If you’re like me, you prefer not to re-invent the wheel when working on a scripting solution. You’d prefer to find a script written by someone else that accomplishes the same task(s). You might be tempted to jump immediately to Google or Yahoo. Before you do, let me give you some other online resources you might want to check first.
I encourage you to visit http://www.searchscripting.com when searching for administrative scripts. This site is hand-tuned to crawl sites known to have script collections and other scripting related material. You are very likely to find practical script examples via this site with little effort.
Of course, any search for scripts should begin at the Technet Script Center . You’ll find a wealth of information on all sorts of scripting topics including a substantial script repository. I also encourage you to check out their scripting “hubs” () which organize scripting resources by topics such as Active Directory, Desktops, HTAs, PowerShell, Security and Windows 2003.
Certainly I encourage you to visit the ScriptingAnswers.com Script Vault where you fill find many user submitted scripts organized by topic as well as my own script library.
If none of those resources are sufficient here are additional online script libraries, collections and repositories:
If you have a favorite online script library, I hope you’ll share.
I’ve updated my Password Manager utility. If you haven’t seen this, I wrote about it in my Mr. Roboto column. This tool will scan computers and report the age of the local administrator password. If you’ve renamed the account you can change the account name to check. When finished, you’ll have a nice report showing how old the administrator account password is on all computers. You can print the report or export it to a CSV.
The utility also will change the password on all your computers as well.
The latest version (v1.4) adds support for searching Active Directory, including recursing through all child containers. If you have a small network this should be ok. But be careful as you might end up trying to check computers that no longer exist. There is a ping option you can select to verify the computer is up and running before attempting an password tasks.
- Added code to support multiple computernames separated by commas.
- Added an Age Limit alarm so that password ages equal to or greater than this number will be highlighted in red.
- Added Report Last Run footer.
You can download the latest version, read more as well as see some short videos of the tool in action at http://www.jdhitsolutions.com/pwdman
I’ve been toying around with the iTunes COM object (iTunes.Application) which gives you some pretty handy control over the iTunes application. I was particularly interested in having something display song lyrics so I developed an HTA that displays album art, artist and song information and lyrics. The tool will refresh whenever a new song is played. If no lyrics are available a link will be provided that might help you find lyrics to LyricWiki.org. The link will open in an external browser window and is a “best guess” based on iTunes song information. If the song does not show up, you can probably still search the site for lyrics. This version does not update lyrics. You’ll have to do that manually.
If you attempt to close iTunes and get a message about another application using iTunes, close the HTA first. If iTunes is not running, when you launch the HTA it will also launch iTunes.
The HTA is not intended as an iTunes replacement, although you could certainly extend the functionality. At some point, I might add better code to find lyrics and even update the song in iTunes. If someone else comes up with code like that, I hope they’ll share.
You can download the zip file with the HTA at http://www.jdhitsolutions.com/scripts.
Last fall I demonstrated an HTA I had developed to rapidly develop a user logon script with practically no scripting. You could map drives and printers based on group membership simply be selecting a group from a pre-populated drop down list. You could display a message to the user with information just as a summary of their mapped resources or how old their password is. You could even run additional programs or code.
The only thing you really have to do is provide a text list of shared drives and printers that you want to map. The new version let’s you specify the location of those files.
- Other items in the new version:
- Fixed bug when using %username% in the drive mapping.
- Previous used values are stored in the registry for faster access.
- Added popup help.
- Added ability to load welcome and error messages from files.
- Added a debug feature.
- Added option to load finished script in Notepad or PrimalScript (if installed).
I have some screen shots of the latest version at http://www.jdhitsolutions.com/logonscriptgen/index.htm.
The latest version is also now a free PrimalScript scripting tool. You can download the latest version at http://www.primalscript.com/freetools/.
Now you can script without scripting! I hope you’ll let me know what you think.
Technorati tags: scripting, HTA, logon, SAPIEN, Network, Primalscript