gpt4 book ai didi

PowerShell boolean 值

转载 作者:行者123 更新时间:2023-12-03 16:29:34 26 4
gpt4 key购买 nike

    $e = $ErrorActionPreference
$ErrorActionPreference="stop"
$E_Subnet_1 = '10.0.1'
$E_Subnet_2 = '10.0.2'
$O_Subnet_1 = '10.11.1'
$O_Subnet_2 = '10.11.2'
$D_Subnet_1 = '10.12.1'
$D_Subnet_2 = '10.12.2'
$Ethernet0 = 'Ethernet0'
$All_Subnets = @("$E_Subnet_1", "$E_Subnet_2", "$O_Subnet_1",
"$O_Subnet_2", "$D_Subnet_1", "$D_Subnet_2")

$result = (Get-NetAdapter |
? status -eq 'up' |
Get-NetIPAddress -ErrorAction 0 |
? PrefixOrigin -eq 'Manual' |
? IPAddress -match $All_Subnets |
foreach { $Ethernet0 -eq $_.InterfaceAlias})

Write-Host "interface_alias=$result"

如果您愿意,请考虑上面查询网络接口(interface)的 PowerShell 代码段,然后根据匹配的子网检查接口(interface)名称是否等于“Ethernet0”并生成 boolean 值。

我当前使用的服务器的 IP 地址与 $D_Subnet_1 的前三个八位字节相匹配,如果我以 $D_Subnet_1 为目标,则生成值 interface_alias=True 像这样:

    $result = (Get-NetAdapter |
? status -eq 'up' |
Get-NetIPAddress -ErrorAction 0 |
? PrefixOrigin -eq 'Manual' |
? IPAddress -match $D_Subnet_1 |
foreach { $Ethernet0 -eq $_.InterfaceAlias})

Write-Host "interface_alias=$result"

但是如果我尝试使用 $All_Subnets 数组运行命令:

    $result = (Get-NetAdapter |
? status -eq 'up' |
Get-NetIPAddress -ErrorAction 0 |
? PrefixOrigin -eq 'Manual' |
? IPAddress -match $All_Subnets |
foreach { $Ethernet0 -eq $_.InterfaceAlias})

Write-Host "interface_alias=$result"

它只生成没有任何值的 interface_alias=

我曾尝试将 -match 换成 -containlike 但没有成功。我该如何解决这个问题?

最佳答案

你在这里使用了错误的比较:

Where-Object -Property 'IPAddress' -Match @('10.30.2','10.40.2')

您需要获取前 3 个八位字节才能正确进行此比较:

Where-Object -FilterScript { $_.IPAddress.Substring(0, $_.IPAddress.LastIndexOf('.')) -in $All_Subnets }

如果您使用的不是版本 3+,只需交换比较的边并将运算符更改为 -contains

关于PowerShell boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com