所以这是我的问题...我已经通过PowerShell脚本导出了Wake on LAN的计算机名称,MAC地址和IP地址列表(CSV文件)。我想在顶部有一个读主机选项,询问用户他们想要唤醒的计算机的主机名。使用简单的读取主机,这部分很容易。
以下是我的问题:如何在导出的CSV中搜索用户输入的用户输入?
以下是我的csv示例:
Hostame MAC IP Address
Computer 1 00-15-60-97-5B-8E 192.168.0.1
etc etc etc
因此,如果用户通过输入设置Read-Host变量的computer1@domain.com指定他们想要唤醒computer1,我怎么能让脚本找到用户想要唤醒的计算机,然后抓住mac和ip与WOLCMD.exe(Wake on LAN命令行工具)结合使用
答案 0 :(得分:1)
如果您的用户拥有V3或更高版本,您还可以使用Out-GridView获取用户输入:
Import-Csv c:\somedir\computerlist.csv | sort computername
Out-GridView -Title 'Select a computer, and press OK to send Wake command:' -OutputMode Single |
foreach { & "wolcmd $_.mac 255.255.255.255 255.255.255.255" }
这将显示使用的CSV的网格视图,并且他们将能够从网格中选择一台计算机以重新启动。
答案 1 :(得分:0)
如果用户指定了计算机名称,则需要过滤该计算机名称的CSV文件,并获取MAC地址和IP地址。
$ComputerName = Read-Host -Prompt 'Please enter a computer name.';
$Csv = Import-Csv -Path c:\test\test.csv;
$Record = $Csv | Where-Object -FilterScript { $PSItem.Computer -eq $ComputerName; };
Write-Host -Object ("Computer's IP address is: {0} and MAC address is: {1}" -f $Record.'IP Address', $Record.MAC);
答案 2 :(得分:0)
这是我测试过的解决方案。这应该像魅力一样工作,并且如果目标不在您的arp表中,将广播MAC地址。
$csvpath = <<modify this with the path to the csv file>>
$comp = read-host -prompt "Enter the target computer name: "
$dataset = import-csv -path $csvpath
$row = ($dataset | where{$_.hostname -eq $comp})
$mac = $row.mac
wolcmd $mac 255.255.255.255 255.255.255.255
确保在运行
之前将csv文件的完整路径放在第1行