Update-Help and Save-Help are new PowerShell version 3 cmdlets which allow you to initially download PowerShell help and keep the local PowerShell help files updated that are installed on your computer and available via the Get-Help cmdlet. In PowerShell version 3, Save-Help allows the updated help files to be saved to a location where a machine that doesn't have Internet access can update it's help from. The problem is that in order to save help for a module, that module has to exist on the local Read more [...]
I've had a lot of irons in the fire this year and haven't had time to dedicate to taking any certification tests year to date. This year, I've spent much of the time that I would have normally spent studying for certification tests, learning PowerShell instead. I competed in the Scripting Games earlier in the year. I finished in third place in the beginner class and lead the beginner class for more than half of the games: I attended several technology events as I normally do each year, but this Read more [...]
You've decided to install PowerShell version 3.0 on your computer. Your computer meets the requirement of running Windows 7 with Service Pack 1, Windows Server 2008 with Service Pack 2, or Windows Server 2008 R2 with Service Pack 1. If you're running Windows 8 or Windows Server 2012, you already have PowerShell version 3.0 installed. There are several different ways to check the operating system version and service pack level. In the following screenshot, I've run "winver.exe" and I can see that Read more [...]
It's definitely beneficial to attend technology events so you can talk to other IT Pro's. This past weekend I presented a session at PowerShell Saturday in Atlanta and while at the speaker dinner I made a comment about a new version of the PowerShell Community Extensions being released. The only cmdlet that's part of that module that I use all of the time is Out-Clipboard which allows you to paste the output of a PowerShell command into notepad, Word, an email, etc: Brian Wilhite, another PowerShell Read more [...]
This past Saturday, I presented a session at PowerShell Saturday 003 in Atlanta. Towards the end of the presentation, I created 290 Active Directory user accounts by using the information for employees contained in the Adventure Works 2012 database. This is actually a PowerShell script that I whipped up Friday night at the hotel after the speaker dinner. I populated some demographic information by joining multiple tables together from that particular database. There is more demographic information Read more [...]
I'll be speaking this Saturday, October 27th at PowerShell Saturday 003 in Atlanta. My session is officially titled "PowerShell Fundamentals for Beginners". A guest blog that I wrote about PowerShell, my session, and the event was published yesterday on the Hey, Scripting Guy! Blog at Microsoft TechNet so take a look at it and the brief description of my session on the PowerShell Saturday 003 website for more details. It's getting close to Halloween so I picked up some special treats in the New Read more [...]
I'm a big fan of the online version of PowerShell help. I also use Google Chrome as my default web browser. Since I've moved to Windows 8 and PowerShell 3.0, using the Get-Help PowerShell cmdlet with the Online parameter generates an error. There's actually two different errors that I've seen a lot of, the first one is because the online help doesn't appear to exist and this error occurs regardless of what web browser you're using: Get-Help : The online version of this Help topic cannot be Read more [...]
You have a fresh installation of Windows Server 2012 that was installed using the default installation type of server core installation (no-GUI). This server will be the first domain controller in a brand new Active Directory forest. Log into the server and launch PowerShell by typing "powershell.exe". You'll need to first add the AD-Domain-Services role to the server:
The installation of this role completes and a restart is not required: Now to make Read more [...]
Use PowerShell to obtain a list of currently running processes where the executable file has been modified in the past 90 days. The number of days is a parameterized value so it can be specified when running the script without having to manually modify the script each time you want to change the value. The script uses a foreach loop to iterate through each individual process that is returned by the Get-Process cmdlet. The process's path property must contain a value or it will not be listed. Each Read more [...]
I posted a blog yesterday about a PowerShell issue I was experiencing and the problem ended up being due to the new PowerShell version 3 Where-Object Syntax producing different results than the PowerShell version 2 Where-Object syntax. Piping Get-Volume to Where-Object and filtering on the drive letter using the version 3 syntax appears to be case sensitive. It doesn't return results when using a lower case 'c':
Using the PowerShell version 2 syntax with Read more [...]
Get-Volume | where DriveLetter -eq 'C'
Get-Volume | where DriveLetter -eq 'c'
While doing some testing on my Windows 8 machine today, I discovered an issue where Filtering Left could produce different results than filtering with the Where-Object cmdlet. Nothing special here. Just using the Get-Volume cmldet and filtering left with its DriveLetter parameter. Using either an upper or lowercase 'C' returns the same results:
Using the Where-Object cmdlet to do the filtering, while not a best practice when the filtering can be accomplished Read more [...]
Get-Volume -DriveLetter 'C'
Get-Volume -DriveLetter 'c'
You have an Active Directory user account and you want to make a second user a member of the same groups without removing the second user from any groups they may already be a member of. I prefer using the Quest PowerShell Cmdlets for Active Directory for doing my AD administration work. They have been downloaded and installed on the system this is being run from. The Quest snap-in has been added to make the cmdlets available. User 'afuller' is a member of several groups in this active directory Read more [...]
You have a customer who has an EqualLogic PS Series Storage Area Network (SAN) where the Snapshot Reserve for many of their SAN volumes is currently set to more than 100% of the actual volume size. The SAN also has several volumes where the snapshot reserve is set to exactly 100%, other volumes where the snapshot reserve is set to less than 100%, and others that don't have or need snapshots configured at all. This customer has recently implemented a new backup solution that uses point in time Read more [...]
This blog post applies to only Windows 8 and Windows Server 2012. Want to know how much time there is until your current DHCP leases expire?
I have 23 hours, 47 minutes, and 46 seconds until my current DHCP lease expires on one of my network interfaces and 22 seconds more than that left on the other one. Want to know the exact date and time of when they expire?
Get-NetIPAddress -PrefixOrigin Dhcp |
select InterfaceAlias , IPAddress, ValidLifetime
I haven't added any error handling to these scripts so if Read more [...]
Get-NetIPAddress -PrefixOrigin Dhcp |
select InterfaceAlias, IPAddress,
This past weekend, I attended PowerShell Saturday 002 in Charlotte, NC. One of the sessions I attended was "Discovering the Power of WMI & PowerShell in the Enterprise" by Brian Wilhite. One of the cool things that Brian covered in his session was how to use the new PowerShell version 3 Get-CimInstance cmdlet to target down level clients that don't have PowerShell installed or don't have PowerShell remoting enabled. There's no parameter to change the protocol on the actual Get-CimInstance Read more [...]