I’m just gonna leave this example right here….
gwmi -Namespace root -class __Namespace -Filter "name = 'ccm'" | rwmi
I’m just gonna leave this example right here….
gwmi -Namespace root -class __Namespace -Filter "name = 'ccm'" | rwmi
As a Systems Engineer/SCCM Administrator I spend a lot of time parsing through data, and assisting support technicians in tracking down failing assets. Now mind you, I have plenty of reports that give me the information I need to identify the machine and users and techs responsible etc, but what happens when I get a random list of employee names from a project manager that has 0 access to user ids or asset numbers for machines? Well, I have to find that information, then spend time later pointing them to resources I’ve made available for them; but that’s another topic….
Anyway, I face both problems, I’ll receive a list of userids or usernames and have to resolve them one against another. Well thanks to powershell I’m able to do so quickly and easily through profile functions. Now, I’ll explain the benefits of profile functions after the code below:
Import-Module activedirectory #-------------------------------------------------------------------- Function Get-UserName { [CmdletBinding()] PARAM($USERID) Get-ADUser $USERID | select name } Set-Alias gun Get-UserName #-------------------------------------------------------------------- Function Get-Userid { [CmdletBinding()] PARAM([string]$NAME) $NAME = $NAME + "*" Get-ADUser -Filter {Name -like $NAME} | select samaccountname,name } Set-Alias guid Get-Userid #--------------------------------------------------------------------
How do I use profile functions?!?
Powershell, much like the BASH shell in Unix/Linux, has a profile “script” so to speak at startup. There is a global one found at:
The same filename syntax is used for the user profile versions:
See a pattern? Simple enough right? None of these profiles exist by default though, they must be created. The names are fairly indicative of what they control, but here’s a breakdown:
Simple enough right? Now, for the sake of simplicity, lets build a current user version of the profile.ps1 and save the above code to it. Make sure you’ve installed the activedirectory cmdlet module provided with windows 7. Now launch powershell and viola you should now have the cmdlets:
and their aliases:
Ok, now what?
Here’s the thing about profile functions. You can treat them like cmd-lets now. That also means that you can script against them. Consider them a static variable for every powershell session that you have configured with this profile.
Pretty cool huh? One of the most powerful features of the shell is it’s configurability, and profile functions and aliases are the tip of that spear.
In the case of user name capture, or id capture, I’m but a simple gc and for-each statement away from processing the list given to me.
I hope this helps broaden your practical understanding of profiles, and gets your creative juices flowing for building your own administrative tool kits. Happy scripting.