- PR -

スクリプトでのIP設定

1
投稿者投稿内容
hiro
会議室デビュー日: 2004/04/21
投稿数: 18
投稿日時: 2004-05-25 22:24
こんばんわ

1000台近くのPCをWin98からWinXPProに移行しようとしています。

OSをインストールした後に(新規端末とVerUPを問わず)DHCPは問題無いのですが、固定IPを設定する時は現状一台づつ、Amdin権限でログオンしての作業をしています。

スクリプトでの設定は可能ですが(Netshだったかな?)、該当のスクリプトはIPをスクリプト内に記述している為、500台に固定IPを振る場合には500台分の記述が必要となります。

これでは不便です。

可能であればCSV等から任意のキー項目を基にIPを読み込みたいのですが、そんな手立てはありますでしょうか?

もしくは、大規模なOSVerUPの経験がある方がいらっしゃる様でしたら、どの様な方法で移行したかを教えて下さい。


kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 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 に設定されたりして...
hiro
会議室デビュー日: 2004/04/21
投稿数: 18
投稿日時: 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'が検索キーとして有効になっていないようです

変数を検索キーとして使用することはできないのでしょうか?
もしくは使いかたが間違っているのでしょうか?




hiro
会議室デビュー日: 2004/04/21
投稿数: 18
投稿日時: 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'が検索キーとして有効になっていないようです

変数を検索キーとして使用することはできないのでしょうか?
もしくは使いかたが間違っているのでしょうか?




masak
会議室デビュー日: 2002/12/26
投稿数: 6
投稿日時: 2004-06-04 13:41
こんにちは。
間違っていたらすみません。

これでいかがでしょうか?
Set objRS = objADO.Execute("select * from install.csv where cpuname = '" & cpname & "'")
hiro
会議室デビュー日: 2004/04/21
投稿数: 18
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)