Revisiting the PowerShell Profile

I’ve posted about the PowerShell profile before but I didn’t really go in depth on it, so I wanted to revisit the subject to make sure that I address some of the points that I may have missed.

To find your PowerShell profile location, you can use PowerShell to list it.

Get-ChildItem $profile

This will bring back the directory %UserProfile%\Documents\WindowsPowerShell.  … Continue reading

Using PowerShell Desired State Configuration (DSC)

I’m just starting to scratch the surface with Windows PowerShell Desired State Configuration (DSC). This seems to be the proper way to accurately configure multiple servers with the identical configuration. Using DSC (Desired State Configuration) to configure servers is as simple as generating a base template that you want to use to setup the servers, and then run it against a list or single server.… Continue reading

How to setup a PowerShell profile and load the PowerCLI Snapin.

My PowerShell profile has been the most used script that I have wrote, and its not really a script.  The PowerShell profile runs every time that PowerShell ISE is opened. With this profile you can customize it to your needs.  It can load frequently used snap ins, functions or even custom properties.  When I help others with scripts, I forget that not everybody has a PowerShell profile setup and customized like myself.… Continue reading

How to verify windows features match with PowerShell.

In the last couple of weeks I had to configure several servers that needed to be the same as in a lower environment.  So instead of just guessing what i installed several months ago, I wrote a script to do it for me.

$OriginalServer = "Server_Name"

#Gets the windows features installed on the original server and stores it as $ComputerA_WindowsFeatures
$ComputerA_WindowsFeatures = (Get-WindowsFeature -ComputerName $OriginalServer | Where {$_.Installed -eq "True"}).Name

#Gets the windows features installed on the system you are currently logon that needs to match the original server and stores it as $ComputerB_WindowsFeatures
$ComputerB_WindowsFeatures = (Get-WindowsFeature | Where {$_.Installed -eq "True"}).Name

#Compares the 2 variables and stores the differences as $difference
$difference = (Compare-Object -ReferenceObject $ComputerA_WindowsFeatures -DifferenceObject $ComputerB_WindowsFeatures).inputobject

#Installed all of the features that are stored in the $difference variable.
Continue reading