Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 没有描述的dsquery计算机_Batch File_Dsquery - Fatal编程技术网

Batch file 没有描述的dsquery计算机

Batch file 没有描述的dsquery计算机,batch-file,dsquery,Batch File,Dsquery,我正在尝试创建一个批处理脚本,列出我域中所有没有计算机描述的笔记本电脑 我似乎无法让DSQUERY找到没有描述的计算机 例如: 在上面的示例中,我尝试搜索不起作用的-desc“”。你们中有谁有什么技巧可以列出没有描述的计算机吗? 感谢您的每一个回复 我对我的脚本进行了一些修改,实际上将“dsget computer-dn-desc”分解为如下内容: DSQUERY Computer -name LAPTOP* -limit 0 | dsget computer -dn -desc>comp

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

我似乎无法让DSQUERY找到没有描述的计算机 例如:

在上面的示例中,我尝试搜索不起作用的-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|||||| 
输出如下所示:

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”(在上面的示例输出中)

给你:

@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

解析输出以证明存在描述也会告诉您相反的情况。如果您可以提供一个示例查询输出,在您的问题中有或没有描述,那么您可能会有一些想法。我实际上已经想到了这一点。操作输出文件,但它的格式很奇怪:CN=LAPTOP011,OU=Laptops,OU=Computers,OU=ACME,OU=ONE,DC=TWO,DC=THREE-johndoe,T430,Windows 7 CN=LAPTOP_012,OU=Laptops,OU=Computers,OU=ACME,OU=ONE,DC=TWO,DC=在我的原始问题(只添加了'>C:\TEMP\dsgetOutput.txt')中,我将DSQUERY | DSGET-语句写入的文本文件中有三个前导空格和尾随空格。你能通过编辑将这些信息粘贴到你的问题中吗?布局很重要。非常感谢@Matt Williamson你让我开心!