【发布时间】:2018-11-11 21:11:17
【问题描述】:
我正在编写一个脚本,它将告诉我服务器上的每个绑定以及绑定解析到的实时 IPv4 地址。我非常接近,但是因为我将结果从 IIS 导出到 CSV,然后在该 CSV 的每个绑定上运行测试连接,所以我无法将结果添加到数组并将完成的结果导出到 CSV 文件。这是脚本:
Import-Module WebAdministration
$hostname = hostname
$Websites = Get-ChildItem IIS:\Sites
$date = (Get-Date).ToString('MMddyyyy')
foreach ($Site in $Websites) {
$Binding = $Site.bindings
[string]$BindingInfo = $Binding.Collection
[string[]]$Bindings = $BindingInfo.Split(" ")#[0]
$n = 1
$i = 0
$status = $site.state
$path = $site.PhysicalPath
$fullName = $site.name
$state = ($site.name -split "-")[0]
$Collection = ($site.name -split "-")[1]
$status = $site.State
$anon = get-WebConfigurationProperty -Filter /system.webServer/security/authentication/AnonymousAuthentication -Name Enabled -PSPath IIS:\sites -Location $site.name | select-object Value
$basic = get-WebConfigurationProperty -Filter /system.webServer/security/authentication/BasicAuthentication -Name Enabled -PSPath IIS:\ -location $site.name | select-object Value
Do{
if( $Bindings[($i)] -notlike "sslFlags=*"){
[string[]]$Bindings2 = $Bindings[($i+1)].Split(":")
$obj = New-Object PSObject
$obj | Add-Member Date $Date
$obj | Add-Member Host $hostname
$obj | Add-Member State $state
$obj | Add-Member Collection $Collection
$obj | Add-Member SiteName $Site.name
$obj | Add-Member SiteID $site.id
$obj | Add-member Path $site.physicalPath
$obj | Add-Member Protocol $Bindings[($i)]
$obj | Add-Member Port $Bindings2[1]
$obj | Add-Member Header $Bindings2[2]
#$obj | Add-member ResolveAddress $result
$obj | export-csv "c:\temp\$date-$hostname.csv" -Append -notypeinformation
$i=$i+2
}
else{$i=$i+1}
} while ($i -lt ($bindings.count))
}
$CSVvar = import-csv "c:\temp\$date-$hostname.csv"
$i=0
foreach ($v in $CSVvar){
If ($v.Header -ne '') {
$result = Test-Connection $v.Header -ErrorAction SilentlyContinue
if ($result) {
$IP = ($result.IPV4Address).IPAddressToString
echo $IP
$v.ResolveAddress = $IP
}
}
}
$CSVvar | export-csv "c:\temp\$date-$hostname.csv" -Append -notypeinformation
我认为最好在第一次导出 CSV 文件之前对每个绑定执行 ping 操作,但我想不出一种方法让它分别尝试 Header 对象的每个元素,我一直在崩溃脚本就是这样。如果我可以将 IP 地址保存回 $CSVvar.ResolveAddress 列,那对我来说很好。任何帮助表示赞赏!
【问题讨论】:
-
站点绑定可以完全没有 IP 地址(例如,全部未分配)。所以你的脚本做了很多你没有在问题中透露的假设。除非您对其进行编辑以包含此类内容,否则无法回答。
标签: asp.net powershell iis iis-8.5