Scripted Home Folder Management with PowerShell Pt. 5
September 27th, 2012 by Jeremy Pavlov | Filed under Microsoft, PowerShell, Scripting, Windows 7.In my last post in this series on scripting user management (see Part 1, Part 2, Part 3, and Part 4 for reference), I left off with a couple different ways to set the Home Folder attribute, using DSMod or PowerShell.
But I thought it was important to spend a moment and stress that when you’re scripting these changes, it’s all about what you *have* available to use as the basis of your queries and changes. What I mean is this: If you only have the samAccountName (often called the User ID), you make the query/change one way; but if you have the CN (known as the User Name), then you do it another way. Let me show you some examples…
DSMod
As shown in Part 4, if you have the CN — as DSMod requires — you can just make the call directly:
dsmod user "cn=Jeremy Pavlov,ou=Demo,dc=CoretekServices,dc=local" -hmdrv H: -hmdir "\\MyCompany.org\DFSPath\Homes\$username$"
But what if you don’t know the CN, and all you have is the samAccountName? Then in this case, you must use the samAccountName to first *get* the CN, then pipe the CN through to the DSMod command like this:
dsquery user -samid "JPavlov" | dsmod user -hmdrv H: -hmdir "\\MyCompany.org\DFSPath\Homes\$username$"
In the above example, we’re using dsquery to simply retrieve the samAccountName, as represented by the samid flag; which returns a perfectly-formatted CN that is used as input for the DSMod. The bottom line is that you can make the change no matter which format you have the User name!
PowerShell
On the PowerShell side of things, you have a similar flexibility. The PowerShell example I used in Part 4 utilized the samAccountName (as represented by the -identity flag) instead of the CN, like this:
Set-ADUser -identity "jpavlov" -homeDrive h: -homeDir "\\MyCompany.org\DFSPath\Homes\jpavlov"
But if you only have the CN to start with, then we have to go fishing. We need to do a Get-ADUser with the -like option, and stuff it in a variable, prune that variable down to just what we want, and then pass it on to the Set-ADUser command. Here’s one example how to get it done, like this:
$Dude = Get-ADUser -Filter 'Name -like "Jeremy Pavlov"' $DudeSamId = $Dude.SamAccountName Set-ADUser -identity $DudeSamId -homeDrive h: -homeDir "\\MyCompany.org\DFSPath\Homes\$DudeSamId"
And with that, we’ll press pause, until next time…
Next time… Let’s wrap this scripting up… See you then!
Tags: DSMod, DSQuery, Powershell, samAccountname

