7

次のようなPC名とMACアドレスの2つの異なる列を持つCSVファイルがあります。

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

これらの値は、次の CLI コマンドに配置する必要があります。

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

現在、約200個あるので、これを自動化したいと考えています。

興味深いことに、これをバッチで行うことはできますか? それはかなり複雑ですよね?配列について考えましたが、これをバッチで実行できるとは思いません。

たぶん、PowerShell を使用すると、もう少し簡単になるでしょう。

4

2 に答える 2

11

バッチ ファイルの場合:

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

実際には、直接からワンライナーでそれを行うことができますcmd:

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

PowerShell では、同様のアイデアを使用できます。

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

または、CSV インポート コマンドレットを使用しますが、質問の内容からすると、列ヘッダーがないように思われるため、手動で指定する必要があります。

Import-CSV -Delim ' ' -Path foo.csv -Header Name,Mac | ForEach-Object {
    wdsutil /Set-Device "/Device:$($_.Name)" "/ID:$($_.Mac)"
}
于 2012-04-26T08:53:30.993 に答える
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 } 

警告: テストされていません。

于 2012-04-26T08:47:13.290 に答える