首页 > 解决方案 > 用于提取主机名列表的 powershell 脚本,确认服务器已启动并使用主机名连接到 url 并提取独特的东西

问题描述

在 PowerShell 中非常绿色,但在批处理和 shell 脚本方面非常好。打算使用 curl 但确实需要它在 PowerShell 中工作,并希望有人有一个例子让我开始。我需要一个脚本来根据 Web 内容识别两种类型的 IoT 设备中的一种。我有大约 20k 台设备,我们需要识别这些设备才能在 Cyber​​ark 中管理他们的密码,具体取决于哪个设备将取决于将其分配到哪个平台。

我想在文本文件中提供主机名列表,脚本将确认主机已启动并响应,然后连接到主机 URL 并提取唯一的内容以识别设备类型和输出主机名、设备类型 A 或 B 或主机名,不响应。这些物联网设备会根据所连接的电池类型而变化,我们无法轻松识别哪些电池。

标签: powershell

解决方案


这不是一个完整的脚本,但它可以帮助您开始......请参考以下链接以使用 Invoke-webrequest https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility /invoke-webrequest?view=powershell-7.2

$devices = Get-Content C:\PS\ServerNames.txt
$port = "5432" #sample port number
foreach ($device in $devices){
    $connection = New-Object System.Net.Sockets.TcpClient($device,$port)
    if ($connection.Connected) {
     $status = "Success"
     #$fromwebrequest = Invoke-WebRequest -uri "https://yoururl" (use Invoke-webrequest instead of curl)
     
} else { 
     $status = "Not responding" 
}
    [pscustomobject][ordered]@{
        deviceName  = $device
        Status  = $status
        devicetype = $fromwebrequest.deviceType
        #addotherparametershere
    }

}

推荐阅读