1

我正在尝试制作一个批处理脚本来列出我域中没有计算机描述的所有笔记本电脑。

我似乎无法让 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 computer -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'

4

1 回答 1

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
于 2014-03-04T15:09:23.447 回答