Recently I needed to quickly get server IPS and Website addresses. So I put together a couple line script to do this. This post is about how that works:
Since I need to get these remotely I’m going to use a PowerShell Session . So I’ll first create my variable to hold the servers i need:
$servers = 'server1','server2','server3','server4'
Now that i have a variable with servers in it I can send this to new-pssesion and use the variable I setup above.
$session = new-pssession -computername $servers
My $sesion variable contains a session to each server that I want to Invoke-Command on. So now I need to come up with a way to get the IPS for every site I have setup in IIS and all the ips for the server I’m calling. If I do this locally I can use this script
import-module webadministration ;(Get-Website) | Select-Object name` ,@{Name='bindings' expression= ` {($_.bindings.collection.bindingInformation -replace ':\d+','').trim(':') }}}
I’m taking the values from Get-website and selecting the name bindings and alson the bindings.collection binding information and removing the Port from the binding number. Return results look like this:
name : MySite bindings : 10.10.10.39
Now all I need is to find out how to get my ip address. I can do this by using the command Get-Netipaddress if I enclose the function I can get at the property:
PS PS:\iis> (get-netipaddress).IPAddress ::1 10.10.10.1 127.0.0.1
Now to put it together in a single script:
$servers = 'server1','server2','server3','server4' $sess = new-pssession -ComputerName $servers -Credential $admCredentials invoke-command -Session $sess {import-module webadministration ;(Get-Website) | Select-Object name ,@{Name='bindings' expression={($_.bindings.collection.bindingInformation -replace ':\d+','').trim(':') }}} invoke-command -session $sess { $env:computername;(get-netipaddress).IPAddress} name : website1 bindings : 10.10.10.48 PSComputerName : server1 RunspaceId : 91f9523f-58df-49d5-a0b1-064101822aae name : websiteapi bindings : 10.10.10.49 PSComputerName : server1 RunspaceId : 91f9523f-58df-49d5-a0b1-064101822aae name : website1 bindings : 10.10.10.50 PSComputerName : server2 RunspaceId : 3cd44533-d827-4a60-bdcc-6c91e77d96b9 name : websiteapi bindings : 10.10.10.51 PSComputerName : server2 RunspaceId : a90c36ca-630e-42a8-abcd-069e8cec5360 server1 server2 ::1 ::1 ::1 10.10.10.48 10.10.10.49 10.10.10.40 10.10.10.51
I hope this helps someone out. .
Until then keep Scripting
thom