gpt4 book ai didi

powershell - 从 Powershell 中的 Get-WebBinding 获取字符串格式的 IIS IP 地址

转载 作者:行者123 更新时间:2023-12-03 16:42:46 25 4
gpt4 key购买 nike

我正在尝试通过 ID(与名称)检索我引用的网站的 IP 地址。我能想到的最好方法是在“bindingInformation”属性上使用正则表达式,直到第一个冒号,如下所示......

$siteID = "22"
$website = Get-Website | Where { $_.ID -eq $siteID }
$iP = Get-WebBinding $website.name | Where { $_.bindingInformation -match "/[^:]*/" }

但是它似乎没有填充 $iP 变量?

当我逐步完成时,我得到了这个:
PS IIS:\sites> Get-WebBinding $website.name

protocol bindingInformation
-------- ------------------
http 10.206.138.131:80:
http 10.206.138.131:80:dev1.RESERVED22
http 10.206.138.131:80:dev1.www.RESERVED22

我想我不确定如何转换 $_.bindingInformation
成字符串格式变量?如果这看起来很简单,那么对 Powershell 来说很抱歉。在此示例中,我需要 $IP 变量为“10.206.138.131”...谢谢您的帮助。

最佳答案

您可以使用 Select-Object -ExpandProperty bindingInformation捕获bindingInformation适当的值(value):

PS C:\> Get-WebBinding "sitename" |Select-Object -ExpandProperty bindingInformation
10.206.138.131:80:
10.206.138.131:80:dev1.RESERVED22
10.206.138.131:80:dev1.www.RESERVED22

现在,由于每个绑定(bind)字符串都采用以下形式:
[IP]:[Port]:[Hostname]

我们可以使用 -split运算符将其拆分为 3 并仅获取第一个:
PS C:\> $Bindings = Get-WebBinding "sitename" |Select-Object -ExpandProperty bindingInformation
PS C:\> $Bindings | ForEach-Object { @($_ -split ':')[0] }
10.206.138.131
10.206.138.131
10.206.138.131

最后,您可以使用 Sort-Object -Unique删除所有重复项:
PS C:\> $Bindings = Get-WebBinding "sitename" |Select-Object -ExpandProperty bindingInformation
PS C:\> $IPs = $Bindings | ForEach-Object { @($_ -split ':')[0] }
PS C:\> $IPs = @($IPs |Sort-Object -Unique)
$IPs变量现在是一个数组,其中包含用于绑定(bind)的所有不同 IP 地址,在您的情况下只有一个:
PS C:\> $IPs
10.206.138.131

关于powershell - 从 Powershell 中的 Get-WebBinding 获取字符串格式的 IIS IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206963/

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