2012-04-26 42 views
6

Tôi có một tập tin CSV với hai cột khác nhau, một với tên máy tính và một với địa chỉ MAC như thế này:Làm cách nào để lặp qua tệp CSV với tập lệnh batch hoặc PowerShell?

PCxxxx 00-11-22-33-44-55 
... 
... 

Những giá trị này nên được đặt vào lệnh CLI sau:

wdsutil /Set-Device /Device:PCxxxx /ID:00-11-22-33-44-55 

Bây giờ vì có khoảng 200 người trong số họ, tôi muốn tự động hóa điều này.

Như một vấn đề đáng quan tâm, người ta có thể làm điều này với hàng loạt không? Nó sẽ khá phức tạp, phải không? Tôi nghĩ về mảng, nhưng không nghĩ rằng người ta có thể làm điều này trong hàng loạt.

Có thể với PowerShell, việc này dễ dàng hơn một chút.

+0

Sẽ trợ giúp này - http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/813f3903-83c3-4a6a-9edf- 320a341ed99d/ –

Trả lời

10

Trong một tập tin batch:

for /f "tokens=1,2 delims= " %%a in (foo.csv) do (
    wdsutil /Set-Device /Device:%%a /ID:%%b 
) 

Trên thực tế, bạn có thể làm điều đó như một lớp lót từ cmd trực tiếp:

for /f "tokens=1,2 delims= " %a in (foo.csv) do wdsutil /Set-Device /Device:%a /ID:%b 

Trong PowerShell, bạn có thể sử dụng một ý tưởng tương tự:

Get-Content foo.csv | ForEach-Object { 
    $name,$mac = -split $_ 
    wdsutil /Set-Device /Device:$name /ID:$mac 
} 

Hoặc sử dụng lệnh nhập CSV, nhưng cho câu hỏi của bạn, bạn dường như không có tiêu đề cột rs, vì vậy bạn cần phải cung cấp cho họ bằng tay:

Import-CSV -Delim ' ' -Path foo.csv -Header Name,Mac | ForEach-Object { 
    wdsutil /Set-Device "/Device:$($_.Name)" "/ID:$($_.Mac)" 
} 
+0

Tùy chọn FOR '... delims =" 'là không cần thiết vì không gian là dấu phân tách mặc định. Bạn có thể chỉ sử dụng' for/f "tokens = 1,2" %% a in ... ' – Aacini

+0

Có, tôi bên cạnh đó, các dấu phân cách mặc định là dấu cách và các tab. – Joey

3
# First column in csv file must be titled PCName, second column must be titled MacAddress. 
Import-Csv myfile.csv | %{ wdsutil /Set-Device /Device:$_.PCName /ID:$_.MacAddress } 

Cảnh báo: không được kiểm tra.

+2

Tệp này dường như không có tiêu đề, do đó bạn cần phải cung cấp chúng theo cách thủ công. Ngoài ra dấu phân cách mặc định sẽ không hoạt động. – Joey

Các vấn đề liên quan