I am having problems getting accurate information from a invoke command and I isolated the issue to how I am using the scriptblock with a local variable. I have to use invoke since to retrieve a list of ip addresses, I need to remote to a server that is on the same domain as my terminal servers.
I have a Session created on my domain controller.
$TSsession = New-PSSession -ComputerName 10.221.21.2 -Credential $credential
This is the correct answer for this particular server’s IP address.
(Invoke-Command -Session $TSsession -ScriptBlock {[System.Net.Dns]::GetHostAddresses("w12-r12-01s")}).ipaddresstostring
10.221.20.227
However, i want to loop through an array of servers, but when I have the value of that server saved as a string to a variable, I receive erroneous results where it spits out the name of the domain controller and not the server 'w12-r12-01s.
Value of $TerminalServer, which is a string
PS C:\Users\bclanton\Google Drive\Code\PS_Code> $TerminalServer W12-R12-01S PS C:\Users\bclanton\Google Drive\Code\PS_Code> $TerminalServer | Get-Member TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone(), System.Object ICloneable.Clone() CompareTo Method int CompareTo(System.Object
Now when I pass this variable to the same invoke command, I get the wrong IP address as well as the IPV6 address.
PS C:\Users\bclanton\Google Drive\Code\PS_Code> (Invoke-Command -Session $TSsession -ScriptBlock {[System.Net.Dns]::GetHostAddresses($TerminalServer)}).ipaddresstostring
fe80::a853:de5a:51:cbc1%12
10.221.21.2
Anyone see my error?