2011-12-08 3 views
0

私は、Windows Server 2003 DNSサーバー上の.vbsからDNSCMD.exe/enumrecordsを実行しようとしており、その結果をDNSゾーンの下にある各ノード名の.csvファイルにダンプします。.VBSノード名の配列のforループでDNSCMD/enumrecordsを実行します。 CLIはDNSCMD /を実行したかのように表示されます。

ノードに入力しましたゾーンの下にあるコマンドを配列に実行して、別の配列にファイル名のリストを入力しました。

考え方は、forループを実行して各ノード名とファイル名0-42を調べ、各ノード名に対してコマンドを実行し、各ファイル名に順番に出力することです。

Option Explicit 
Dim ncpArr, NODE, fnameArr, FILE, DNSCMD, objWSHShell, QComm 
Set objWSHShell = WScript.CreateObject("WScript.Shell") 

ncpArr = Array(42 item array of DNS Nodes) 

fnameArr = Array(42 item array of filenames) 

QComm = "DnsCmd DNSservername /enumrecords contoso.com " & ncpArr(NODE) & " /Additional> c:\DNSData\" & fnameArr(NODE) & ".csv" 

For NODE = 0 to 42 
objWSHShell.Run QComm,1,True 
'objWshShell.Exec QComm 
'wscript.echo "| " & ncpArr(NODE) & " | | " & fnameArr(NODE) & " |" 
'wscript.echo DNSCMD 
Next 

意図

は自分自身にいくつかの時間を節約することでしたが、私は時間を三倍にしましたどちらかと言えば、それは、このスクリプトを書きながら、これらの42個のコマンドを実行するためにかかったでしょう。私がこれまでに考え出した何

は次のとおりです。

私はそれがCSVを出力DNSサーバー上でこのコマンドを実行すると私は同じようなコマンドを実行すると、私は

DnsCmd dnsservername /enumrecords zone.name node.st.name /Additional /continue> c:\DNSData\state_city_net.csv 

にそれをしたいまったく同じこの:

Set objWSHShell = WScript.CreateObject("WScript.Shell") 
objWSHShell.run "dnscmd /enumrecords zone.name node.st.name /additional> c:\DNSData\state_city_net.csv" 

コマンドライン]ボックスには、私はDNSCMDを/走ったかのように簡単にDNSCMDするための手順を示すポップアップします?。私は上記のループを実行し、適切なタイミングで一時停止/中断を押すだけでそれを見ることができました。コマンドラインボックスを開いてエラーを表示することができるかどうかわからない

誤った構文で実行すると、通常は上に表示されるエラーに関する情報が表示されます。この場合、文字通りDNSCMD /?上部にエラーのない指示。

.vbsを使ってDNSCMD/enumrecordsを実行することができないのではないかと真剣に考えています。コメントアウトされた部分からわかるように、構文が正しいことを示すためにいくつか試したことがあります。ループの出力をエコーすると、DNSサーバー上のコマンドラインに正確な構文を入力することができます。

誰でも私が上記のことを見て、私がスクリプトを実行したときになぜそれを行うのか、あるいは私のスクリプトが健全であることを確認してDNSCMDの何かであれば、 。あなたはシェル( 'DOSボックス')に

DnsCmd dnsservername /enumrecords zone.name node.st.name /Additional /continue> c:\DNSData\state_city_net.csv 

を入力

おかげ ドリュー

答えて

0

、リダイレクトは(>)このシェルによって提供されています。あなたの

objWSHShell.run "dnscmd /enumrecords zone.name node.st.name /additional> c:\DNSData\state_city_net.csv" 

リダイレクトを実行することはできません。行を

objWSHShell.run "%comspec% /c dnscmd /enumrecords zone.name node.st.name /additional> c:\DNSData\state_city_net.csv" 

に変更してください(行方不明)/続行について考えてください。 (単一の)テストでは、/ c(終了時に閉じる)を/ k(開いたままにする)に変更できます。おそらく、.Runメソッドの3つのパラメータをすべて再読み込みして(?を使用して)、戻り値に注意を払うことは良い考えかもしれません。

+0

本当にありがとうございました。私はそれを働かせることができました。 DNSCMDコマンドから%comspec%/ cを削除し、それを実行するまでループは配列内の次の項目に移動しません。 objWSHShell.Run "%comspec%/ c"&QComm& ""、1 、真 –

関連する問題