Powershell将字符串转换为System.Net.IPAddress

Powershell将字符串转换为System.Net.IPAddress,powershell,ip,Powershell,Ip,我是powershell的新手,正在尝试自动创建DHCP保留 到目前为止,我能够获得这样的IP地址: $IP = ( GEt-VM -ComputerName $HVCOMPUTERNAME -VMName $HVNAME | Get-VMNetworkAdapter).IpAddresses[0] 这将返回如下字符串: 192.0.2.1 但是,Add-DhcpServer4Resrvation cmdlet不接受ip地址作为字符串。它要求IP地址为“System.Net.IpAddres

我是powershell的新手,正在尝试自动创建DHCP保留

到目前为止,我能够获得这样的IP地址:

$IP = ( GEt-VM -ComputerName $HVCOMPUTERNAME -VMName $HVNAME | Get-VMNetworkAdapter).IpAddresses[0]
这将返回如下字符串:

192.0.2.1
但是,Add-DhcpServer4Resrvation cmdlet不接受ip地址作为字符串。它要求IP地址为“System.Net.IpAddress”

Add-DhcpServerv4Reservation -ComputerName $DHCPServer -ScopeId $DHCPScope -IPAddress $IP -Client
Id $MacAddress -Name $HVNAME

Add-DhcpServerv4Reservation : Cannot process argument transformation on parameter 'IPAddress'. Cannot convert value "
10.254.130.104
" to type "System.Net.IPAddress". Error: "An invalid IP address was specified."
At line:1 char:86
+ ... ope -IPAddress $IP -ClientId $MacAddress -Name $HVNAME
+                    ~~~
    + CategoryInfo          : InvalidData: (:) [Add-DhcpServerv4Reservation], ParameterBindingArgumentTransformationEx
   ception
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Add-DhcpServerv4Reservation
如何将字符串转换为系统.Net.IPAddress

据我所知,这应该很容易

> [ipaddress]"192.0.2.1"
然而,这不起作用

PS C:\Windows\system32> $FOO = [IPAddress]$IP
Cannot convert value "
10.254.130.104
" to type "System.Net.IPAddress". Error: "An invalid IP address was specified."
At line:1 char:1
+ $FOO = [IPAddress]$IP
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvalidCastParseTargetInvocation
                   tworkAdapter) Format-List -Property *.254.13༁爼ሂÌGEt-VM -ComputerName $HVCOMPUTERNAME -VMName $HVNAME | Get-VMNetworkAdapter) | Format-List -Property *    {༁牎ᐂÊGEt-VM -ComputerName $HVCOMPUTERNAME -VMName $HVNAME | Get-VMNetworkAdapter | Format-List -Property *
ఁ牘ࠂÆ$IP = ( GEt-VM -ComputerName $HVCOMPUTERNAME -VMName $HVNAME | Gt-VMNex뿰bpte
相关问题

[IPAddress]
如果字符串中有空格,则无效

用饰件()将其拆下


获取服务器IP地址的一种完全不同的方法是:

通过将工作站/服务器名称作为参数传递给输入类型System.Net.DNS cast

例如,如果主机的FQDN名称为ABCTest DEV,则以下脚本将显示所提供的ABCTest DEV的IP地址,主机在域中已有可用的DNS记录

$ipaddr=[System.Net.Dns]::GetHostAddresses('ABCTest-Dev')|其中AddressFamily-EQ“InterNetwork”
写入主机“”此主机的IPV4地址为:“$ipaddr”

值得注意的是,这适用于所有空格,而不仅仅是空格。如果字符串中有前导或尾随制表符或空行,那么也可以使用
.Trim()
方法删除这些制表符或空行,因此答案通常是有效的,但也有一些东西不是通过这种方式删除的。
$IP = [IPAddress]$IP.Trim()