Jump to content
Byte-ul

Weekend Scripter: Exploring IP Address Functions

Recommended Posts

Posted

Microsoft Scripting Guy, Ed Wilson, is here. This morning, I decided to make a cup of orange spice tea. I did not even do it manually. I used a tea bag. I know, I know, I know. But hey, sometimes I like the convenience of opening a tea bag and filling the cup with hot water. Boom! I am done. This is especially true when I have a good bag of tea—not some of the cheaper tea that one might purchase at a big-box discount store that sells everything from car batteries to peanut butter. Indeed, over the years, I have found that there are some companies that put high quality tea leaves in their little bags.

The same might be said of a TCP/IP configuration. I mean, I might enjoy writing a script that calls a variety of WMI classes to manually configure the TCP/IP configuration of my workstation—but hey, it is certainly easier to use DHCP. In fact, when the results are the same, there is no reason to waste my time doing things manually. It is the end result that is the goal. Like a fine cup of hot tea, results count.

So whenever DHCP is available, I use it. There are times when I resort to my scripts, but that is generally for test environments when I do not want to take the time to configure a DHCP server. The same is basically true for finding the results—I can use the*Get-NetIPAddress*function from the*NetTCPIP*module to retrieve my IP configuration information. This is great because the function returns an object that is easily manipulated. In addition, I do not need to remember esoteric, confusing switches and parameters. Instead, because it is Windows PowerShell, everything is consistent.

Finding informationTo find functions that provide information, I can use the*Get-Command*cmdlet. I am interested in the verb*Get*and the module*NetTcpIp.*Here is the command and the output from the command:

PS C:\> gcm -Verb get -Module NetTCPIP

CommandType**** Name * * * * * * * * * * * * * * * * * * * *ModuleName****************

----------- * * * * * * * *---- * * * * * * * * * * * * * * * * * * * * * * * ----------****************

Function****** *Get-NetCompartment * * * * * * * * * * * * NetTCPIP******************

Function******* Get-NetIPAddress * * * * * * * * * * * * * * * NetTCPIP******************

Function******* Get-NetIPConfiguration * * * * * * * * * * * NetTCPIP***** *************

Function******* Get-NetIPInterface * * * * * * * * * * * * * * *NetTCPIP******************

Function******* Get-NetIPv4Protocol * * * * * * * * * * * * * *NetTCPIP******************

Function******* Get-NetIPv6Protocol * * * * * * * * * * * * * *NetTCPIP******************

Function******* Get-NetNeighbor * * * * * * * * * * * * * * * * *NetTCPIP******************

Function******* Get-NetOffloadGlobalSetting * * * * * * * *NetTCPIP******************

Function******* Get-NetPrefixPolicy * * * * * * * * * * * * * * *NetTCPIP******************

Function******* Get-NetRoute************************************** NetTCPIP******************

Function******* Get-NetTCPConnection * * * * * * * * * * * NetTCPIP************* *****

Function******* Get-NetTCPSetting * * * * * * * * * * * * * * *NetTCPIP******************

Function******* Get-NetTransportFilter * * * * * * * * * * * * NetTCPIP******************

Function******* Get-NetUDPEndpoint * * * * * * * * * * * * * NetTCPIP******************

Function******* Get-NetUDPSetting * * * * * * * * * * * * * * *NetTCPIP******************

Using Get-NetIPAddress functionFrom the previous list, I decide I want to use the*Get-NetIPAddress*function to explore the configuration of my network adapters. Unfortunately these days, a single laptop may have more than a dozen things that are considered network adapters. In fact, most are virtual of some sort. But nearly always, there are at least two real network adapters: wireless and wired.

Depending on what is going on, one or both of the adapters may be bound to TCP/IP and may have assigned IP addresses.

At the most basic, I simply type the function name, and it returns information. This is shown here:

hsg_2D00_12_2D00_27_2D00_14_2D00_01.png

As I look over this output, I see that there is IPv6 in additon to IPv4. I am interested in IPv4.

Note**For performance reasons, if at all possible, always filter to the left of the Windows PowerShell pipeline,*

not to the right.

To filter only IPv4, I could pipe the output to*Where-Object. The command might look something like the following:

Get-NetIPAddress | where addressfamily -eq 'ipv4'*

But that is a lot of work, and it violates the rule of trying to filter on the left side of the Windows PowerShell pipeline character if at all possible. In this case, the*Get-NetIPAddress*function has a parameter that will accomplish the same thing as the previous command. Here is the revision:

Get-NetIPAddress -AddressFamily IPv4

The cool thing is that I do not have to type the previous command completely. This is because the Windows PowerShell ISE command completion feature pops up with suggestions. This is shown here:

hsg_2D00_12_2D00_27_2D00_14_2D00_02.png

I simply need to select the appropriate choice from the list to complete my command.

So now I have only IPv4 addresses. But I am also interested in the addresses that are supplied via DHCP. One way of obtaining this information is to look at the*PrefixOrigin*parameter. The revised command is shown here:

Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Dhcp

As shown here, if I am interested in statically assigned information, I can switch from*DHCP*to*Manual:

Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Manual

By using the various switches and parameters of the*Get-NetIpAddress*function, I can easily find a lot of information about my computer. And if I was inclined, I could also obtain information remotely by using the*CimSession*parameter. All I would need to do is to create one or more CIM sessions and then feed that to the function. Piece of cake.

I invite you to follow me on*Twitter*and*Facebook. If you have any questions, send email to me at*scripter@microsoft.com, or post your questions on the*Official Scripting Guys Forum. See you tomorrow. Until then, peace.

http://blogs.technet.com/b/heyscriptingguy/archive/2014/12/27/weekend-scripter-exploring-ip-address-functions.aspx

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...