2012-01-11 10 views

答えて

1

これは素晴らしいコードではありません.Windows APIについてよく知っていれば、win32conを使用することをおすすめします。しかし、これはかなり機能的です:

import subprocess 

splitstring = "\\r\\n" 
bCompList = subprocess.check_output(['dsquery', 'computer', 'domainroot', 
            '-scope', 'subtree', '-limit', '0']) 
compList = str(bCompList)[2:-5].split(splitstring) 

subprocessモジュールは外部コマンドを実行するために使用されます。私はreading up on the documentationを提案する。 subprocess.check_outputはstdoutからコマンドの出力をキャプチャして返します。

ここでは、dsquery computerを使用して、すべてのコンピュータオブジェクト()のドメイン全体('domainroot')を照会しています。この場合、コマンドはリストです。バイナリ文字列を返します。ここにはbCompListに格納されています。

バイナリ文字列なので、おそらく標準の文字列形式に変換して作業したいと思っています。つまり、str()を使用しています。 「迷惑メール」文字(「b」は文字列がバイナリであることを示し、末尾には'\\r\\n'ガベージが表示されます)をトリミングするためにスライシングを使用できます。この結果の文字列はsplit()によって使用され、リストに分割されます。ちなみに

、あなたは、引用符に各コンピュータオブジェクトの周りdsquery computer場所を切り落とす[3:-6]にスライスを変更し、splitstring = "\"\\r\\n\""splitstring = "\\r\\n"を変更したい場合。

このコードには2つの重要な注意点は、しかし、があります。

  • それはそれだ、少なくとも、インストールされたWindows「AD DSスナップインおよびコマンドライン・ツール」機能(とコンピュータ上で実行する必要がありますWindows Server 2008 R2で呼び出されるもの)
  • 適切な権限を持つADユーザーとしてログインする必要があります。 (または、あなたが適切な資格情報を使用してusernamepasswordを置き換え、コマンド引数リストに'-u', username, '-p', passwordを含めることができます。)
関連する問題