2014-03-04 30 views
1

我試圖製作一個批處理腳本來列出我的域中沒有計算機說明的所有筆記本電腦。沒有說明的dsquery計算機

我似乎無法讓DSQUERY發現電腦沒有說明 例子:

DSQUERY Computer -name [COMPUTERNAMES]* -desc "" -limit 0 | dsget computer -dn -desc 
dsquery failed:The search filter cannot be recognized. 
type dsquery /? for help. 
dsget failed:'Target object for this command' is missing. 
type dsget /? for help. 

在上面的例子中我試圖尋找-desc「」,這是行不通的。你們中的任何一個人都有一些技巧來列出沒有說明的電腦嗎 感謝您的回覆!

我已經修改了我的腳本有點實際掰開 'DSGET計算機-dn -desc' 是這樣的:

DSQUERY Computer -name LAPTOP* -limit 0 | dsget computer -dn -desc>computers_unformatted.txt 
FOR /F "tokens=2,15,16,17,18,19,20 delims=,= " %%a IN (computers_unformatted.txt) DO (
    ECHO.%%a^|%%b^|%%c^|%%d^|%%e^|%%f^|%%g>>computers_unformatted2.txt 
) 

輸出看起來是這樣的:

LAPTOP039|John|Doe|T430|Windows7|| 
LAPTOP040|||||| 

我到這裏有一些很好的東西,但我似乎無法寫出任何能讓輸出變得正常的東西(在上面的例子中輸出)'LAPTOP040'

+0

解析輸出,證明說明** **是目前還會告訴你相反。如果您可以提供示例查詢輸出**,在您的問題中有和沒有**描述,那麼您可能會有一些想法。 – foxidrive

+0

我已經想到了。輸出文件的操作,但它有一個奇怪的格式,如下所示:CN = LAPTOP011,OU =筆記本電腦,OU =計算機,OU = ACME,OU = ONE,DC = TWO,DC =三個johndoe,T430,Windows 7 CN = LAPTOP_012,OU =筆記本電腦,OU =計算機,OU = ACME,OU = ONE,DC = TWO,DC = TH所有前後空格都存在於我編寫DSQUERY的文本文件中。 DSGET - 陳述到我原來的問題(只需添加'> C:\ TEMP \ dsgetOutput.txt')。 – MatthiasPettersson

+0

你可以通過編輯粘貼信息到你的問題嗎?佈局很重要。 – foxidrive

回答

1

你在這裏:

@echo off 
setlocal 

set "dsq=dsquery * dc^=acme^,dc^=one^,dc^=com -limit 0 -filter "^&^(ObjectCategory^=Computer^)^(ObjectClass^=Computer^)" -attr cn description" 
for /f "skip=1 tokens=1,2*" %%a in ('%dsq%') do ( 
    if "%%b" EQU "" echo %%a is missing a description 
) 
exit /b 

而只是爲了好玩,我掀起這件事

@echo off 
setlocal enabledelayedexpansion 

set "dsq=dsquery * dc^=acme^,dc^=one^,dc^=com -limit 0 -filter "^&^(ObjectCategory^=Computer^)^(ObjectClass^=Computer^)" -attr cn description" 
for /f "skip=1 tokens=1,2*" %%a in ('%dsq%') do ( 
    if "%%b" EQU "" (
    echo(%%a is missing a description 
    set /p "ans=Would you like to add a description for %%a now? (Y/N) " 
     if /i "!ans!" EQU "Y" ( 
      set /p "desc=Enter a new description for %%a: " 
      dsadd computer "%%a" -desc !desc! 
     ) ELSE (
      Echo Moving on to next computer. 
     ) 
    ) 
) 
exit /b 
+0

非常感謝你@Matt Williamson 你已經度過了我的一天! – MatthiasPettersson