0

所以这是我的问题...我通过 PowerShell 脚本导出了 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

因此,如果用户指定他们想通过输入 computer1@domain.com 设置 Read-Host 变量来唤醒计算机 1,我怎样才能让脚本找到用户想要唤醒的计算机,然后获取要使用的 mac 和 ip结合 WOLCMD.exe(Wake on LAN 命令行工具)

4

3 回答 3

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 的网格视图以供使用,他们将能够从网格中选择一台计算机来重新启动。

于 2014-04-15T10:56:13.080 回答
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);
于 2014-04-15T02:24:31.613 回答
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 文件的完整路径放在第一行

于 2014-04-15T03:33:07.833 回答