- - PR -
スクリプトでのIP設定
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-05-25 22:24
こんばんわ
1000台近くのPCをWin98からWinXPProに移行しようとしています。 OSをインストールした後に(新規端末とVerUPを問わず)DHCPは問題無いのですが、固定IPを設定する時は現状一台づつ、Amdin権限でログオンしての作業をしています。 スクリプトでの設定は可能ですが(Netshだったかな?)、該当のスクリプトはIPをスクリプト内に記述している為、500台に固定IPを振る場合には500台分の記述が必要となります。 これでは不便です。 可能であればCSV等から任意のキー項目を基にIPを読み込みたいのですが、そんな手立てはありますでしょうか? もしくは、大規模なOSVerUPの経験がある方がいらっしゃる様でしたら、どの様な方法で移行したかを教えて下さい。 |
|
投稿日時: 2004-05-26 02:53
こんばんわ.
remote install service はどうでしょう?応答ファイルを作っておくと,bootp から起動して勝手に WindowsXP を導入してくれます.もっとも,一台づつ 応答ファイルに uniq な ip address と computer name を書いておく必要がありますが... って,実際にやったことがあります. 以下,眠い中書いたから参考になるかどうか... 結局管理者権限が必要ですよね.なので,WindwsXP へ administrator などで local logon して,netsh の script を流す際に ip address だけ環境変数にしておくとか. netsh interface ip set address "ローカル エリア接続" static IP-address netmask gateway 1 って感じになると思いますが,このうち可変部分は IP-address と gateway ですよね.で,IP-address も a.b.c.d のうちの c と d とかが違ってるとします. bat にすると下記の 1line. netsh interface ip set address "ローカル エリア接続" static a.b.c.d netmask gateway 1 ここで c と d をそれぞれ環境変数にすると netsh interface ip set address "ローカル エリア接続" static a.b.%1.%2 netmask gateway 1 で,gateway も変わるでしょうから,同じ network の 254 を常に使うとして netsh interface ip set address "ローカル エリア接続" static a.b.%1.%2 netmask a.b.%1.254 1 で,この内容を書いた script を実行する際に %1 と %2 だけ指定する. > bat.cmd 1 2 すると IP-address が a.b.1.2 で gateway が a.b.1.254 に設定されたりして... |
|
投稿日時: 2004-06-03 22:42
ご返信ありがとうございます
その後ですが、WMIを使用してなんとかなりそうなんですが・・・ →http://www.microsoft.com/japan/technet/scriptcenter/network/scrnet01.asp また壁が・・・ ここで聞いていいのかわかりませんが、ご返信頂けたら幸いです コンピュータ名をキーにしたCSVファイルを作成しました。 ※対になってIPアドレスが記述してあります コンピュータ名を取得して変数とし、ADOを使用して1000行あるCSVに接続し、さらに IPアドレスを変数として取得しようとします --- Set objWshNetwork = WScript.CreateObject("WScript.Network") cpname = objWshNetwork.ComputerName →コンピュータ名を変数として取得 その後 --- 'ADOを使いCSVファイルを読み込む objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "DBQ=C:\Documents and Settings\******;" & _ "ReadOnly=1" 'SQLを実行し、コンピュータ名がキーになるレコードを検索します Set objRS = objADO.Execute("select * from install.csv where cpuname = 'cpname'") --- ファイル内でCPUnameというフィールドがあります その中にはユニークなコンピュータ名が格納されているのですが 'cpname'が検索キーとして有効になっていないようです 変数を検索キーとして使用することはできないのでしょうか? もしくは使いかたが間違っているのでしょうか? |
|
投稿日時: 2004-06-03 22:42
ご返信ありがとうございます
その後ですが、WMIを使用してなんとかなりそうなんですが・・・ →http://www.microsoft.com/japan/technet/scriptcenter/network/scrnet01.asp また壁が・・・ ここで聞いていいのかわかりませんが、ご返信頂けたら幸いです コンピュータ名をキーにしたCSVファイルを作成しました。 ※対になってIPアドレスが記述してあります コンピュータ名を取得して変数とし、ADOを使用して1000行あるCSVに接続し、さらに IPアドレスを変数として取得しようとします --- Set objWshNetwork = WScript.CreateObject("WScript.Network") cpname = objWshNetwork.ComputerName →コンピュータ名を変数として取得 その後 --- 'ADOを使いCSVファイルを読み込む objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "DBQ=C:\Documents and Settings\******;" & _ "ReadOnly=1" 'SQLを実行し、コンピュータ名がキーになるレコードを検索します Set objRS = objADO.Execute("select * from install.csv where cpuname = 'cpname'") --- ファイル内でCPUnameというフィールドがあります その中にはユニークなコンピュータ名が格納されているのですが 'cpname'が検索キーとして有効になっていないようです 変数を検索キーとして使用することはできないのでしょうか? もしくは使いかたが間違っているのでしょうか? |
|
投稿日時: 2004-06-04 13:41
こんにちは。
間違っていたらすみません。 これでいかがでしょうか? Set objRS = objADO.Execute("select * from install.csv where cpuname = '" & cpname & "'") |
|
投稿日時: 2004-06-08 22:24
こんばんわ。
ありがとうございました。解決です。 で、ごめんなさい・・・最後に一つ・・・ >'SQLを実行し、コンピュータ名がキーになるレコードを検索します Set objRS = objADO.Execute("select * from install.csv where cpuname = '&cpname &'") コンピュータ名をキーにして同レコード内のIPアドレスをこの後、取得しますが・・ 例)169.254.11.10 を →169.254として数値として取得してしまいます。 元ファイルの構成が悪いのでしょうか? これで最後にします。すいません・・・ |
1
