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