从 Jenkins 输入到变量 powershell 的 IP 地址

IP Address Input from Jenkins to Variable powershell

我有 Jenkins 作业要求 IP 地址

$ip = $env:Lan_ip

用户输入的内容会转到 $ip

现在 $ip 例如 192.168.10.10

现在我正在尝试将此变量插入 FortiGate SSH

Invoke-SshCommand $Firewall -command ‘config system interface 
edit port1
set ip $ip 255.255.255.0
end’

但是他看不懂 $ip 我需要像 INT 一样把它和 .

分开

我遇到了这个错误

node_check_object fail! for ip $ip 

当用户输入 ip 地址时,我如何转换从用户那里得到的 sting im --> 192.168.10.10 到代码中的可用变量

根据我从 here 收集到的信息,您需要提供 子网掩码 作为 CIDR 格式的子网掩码,例如 255.255.255.0/24

要从子网 IP 地址获取 CIDR 值,您可以使用此函数:

function Get-SubnetMaskLength ([string]$SubnetMask) {
    # $cidr = Get-SubnetMaskLength "255.255.240.0" --> 20
    $result = 0
    [IPAddress]$ip = $SubnetMask
    foreach ($octet in $ip.GetAddressBytes()) {
        while ($octet) {
            $octet = ($octet -shl 1) -band [byte]::MaxValue
            $result++
        }
    }
    $result
}

所以

$subNet = '255.255.255.0'
$cidr = Get-SubnetMaskLength $subNet          # --> 24
$subNetAndCidr = '{0}/{1}' -f $subNet, $cidr  # --> 255.255.255.0/24

P.S。在代码中始终使用 引号而不是卷曲的