解析用于读取主机用户输入的csv

时间:2014-04-15 01:00:52

标签: powershell csv wake-on-lan

所以这是我的问题...我已经通过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命令行工具)结合使用

3 个答案:

答案 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行