Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
What can you do with the Get-Content cmdlet? Well, one thing you can do is quickly read and display the contents of a text file. For example, this command displays the contents of the file C:\Scripts\Test.txt:
Get-Content c:\scripts\test.txt
And here’s what you’ll get:
Hey, we never said it was exciting, just that it was useful.
How useful? Here’s a simple, but telling example. Suppose you have a text file (C:\Scripts\Test.txt) that contains the names of two or more computers. You’d like to use WMI to retrieve information about the BIOS installed on each of those computers. Here you go:
Get-Content c:\scripts\test.txt | Foreach-Object {Get-Wmiobject -computername $_ win32_bios}
Assuming you have just two computers list in the text file you’ll get back information similar to this:
SMBIOSBIOSVersion : 68DTT Ver. F.0D
Manufacturer : Hewlett-Packard
Name : EPP runtime BIOS - Version 1.1
SerialNumber : CND60723S7
Version : HP - 22110520
SMBIOSBIOSVersion : A03
Manufacturer : Dell Computer Corporation
Name : Phoenix ROM BIOS PLUS Version 1.10 A03
SerialNumber : HTVNX41
Version : DELL - 7
Good question: how does that command work? The first part is pretty self-explanatory: we just use Get-Content to read the contents of the text file. Now, let’s take a look a look at the second half of the command:
ForEach-Object {Get-Wmiobject -computername $_ win32_bios}
What we’re doing here is passing the contents of the text file (our computer names) to the ForEach-Object cmdlet. As it turns out, Get-Content automatically creates an array based on the content it is retrieving; in the case of a text file, each line in the file will be a single item in the array. The ForEach-Object simply takes the contents of the file, one line at a time, and calls the Get-WmiObject cmdlet, providing Get-Wmiobject with a different line from the file (using the default pipeline variable $_) repeatedly until all lines have been read. Get-Wmiobject then connects to the computer and retrieves information from the Win32_BIOS class.
Confused? Try it on your set of computers and see what happens.
Because Get-Content automatically creates an array consisting of each line in the file, that means you can also use the Measure-Object cmdlet to easily count the number of lines in the file, a task people like to do on a regular basis:
Get-Content c:\scripts\test.txt | Measure-Object
The preceding command returns data similar to this:
Count : 124
Average :
Sum :
Maximum :
Minimum :
Property :
Interesting question: what if you want to return only the first x number of lines in the file? In that case simply add the -totalcount parameter followed by the number of lines to retrieve. This command returns only the first five lines in the file Test.txt:
Get-Content c:\scripts\test.txt -totalcount 5
To get the last five lines in the text file simply read the file using Get-Content, then have Select-Object pick out the last five items for you:
Get-Content c:\scripts\test.txt | Select-Object -last 5
Get-Content Aliases |
---|
|