2014-04-15 43 views
0

因此,這是我的問題...我已經通過PowerShell腳本導出了Wake on LAN的計算機名稱,MAC地址和IP地址列表(CSV文件)。我想在頂部有一個讀主機選項,詢問用戶他們想要喚醒的計算機的主機名。這個部分很簡單,只需一個簡單的Read-Host即可。爲Read-Host用戶輸入解析csv

這是我的問題:我如何通過導出的用戶輸入的用戶輸入CSV進行搜索?

這裏是我的CSV的例子:

Hostame    MAC    IP Address 

Computer 1  00-15-60-97-5B-8E  192.168.0.1 
etc     etc     etc 

所以如果用戶指定他們希望通過輸入[email protected]設置讀Host變量來喚醒電腦1,我怎麼能有一個腳本找到計算機用戶想要喚醒,然後抓取mac和ip結合使用WOLCMD.exe(Wake on LAN命令行工具)

+0

什麼版本的Powershell? – mjolinor

回答

0

這是我的測試解決方案。這應該像一個魅力工作,並將廣播的MAC地址,以防目標不在你的ARP表中。

$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文件運行

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); 
1

如果用戶有V3或更好的,你也可以使用出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的網格視圖以供使用,他們將能夠從網格中選擇一臺計算機重新啓動。

+0

使用Out-GridView作爲管道操作的一部分從用戶中選擇列表成員的方式非常靈活。 – HipCzeck