用于收集用户名,pcname和Dell服务标签的Powershell或批处理脚本(wmic识别名称)

时间:2014-10-23 09:20:42

标签: windows powershell batch-file

我的任务是收集大约3-400台笔记本电脑和笔记本电脑的数据。出于安全原因,必须在每台机器上逐个本地完成任务。 有人能指出我使用PowerShell或批处理脚本的正确方向,以获取详细信息。 我尝试使用以下批处理脚本: for /f "skip=1 tokens=1" %%A in ('wmic csproduct get identifyingnumber /value') do set asset=%%A echo %%A,%computername%,%username% >> "file.csv"

但是这没有用,因为wmic命令在末尾有一个空行并用空白覆盖%%A。 请帮助一个菜鸟:) 提前谢谢。

2 个答案:

答案 0 :(得分:1)

for /f "tokens=2 delims==" %%a in ('
    wmic csproduct get identifyingnumber /value
') do for /f "delims=" %%b in ("%%a") do (
    >>"file.csv" echo(%%b,%computerName%,%username%
)

/value命令中的wmic开关要求以key=value格式输出。 for将使用等号作为分隔符来对行进行标记,仅检索第二个标记,即值。当我们请求第二个令牌时,唯一包含两个令牌的行是带有数据的行,不需要跳过或过滤输出。

此外,wmic的输出在行尾包含一个aditional回车符,因此第二个for循环用于删除它。

已修改以适应评论

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f "delims=" %%a in ('
        wmic csproduct get identifyingnumber^,name^,vendor /value
    ') do for /f "delims=" %%b in ("%%a") do set "_%%b"

    for /f "delims=" %%a in ('
        wmic useraccount where (name^="%username%"^) get fullname /value
    ') do for /f "delims=" %%b in ("%%a") do set "_%%b"

    >>"file.csv" echo(%_fullname%,%username%,%_vendor%,%_name%,%computerName%,%_identifyingnumber%

在这种情况下采用简化方法。我们仍在检索key=value格式,因此,使用此格式直接设置带有值的环境变量。需要一个附加查询来检索当前用户的全名( note :显然是为运行脚本的用户检索数据)

答案 1 :(得分:0)

您必须在每台机器上手动进行此操作吗?当单个WMI调用可以远程获取时没有问题,这似乎有点疯狂。

这是一种更简单的方法,可以在本地使用Powershell。

Get-WmiObject -Class Win32_Bios | Select-Object PSComputerName,SerialNumber  | Export-Csv -Path computerserials.csv -Append -NoTypeInformation

在那里添加-Computername param以远程执行。

Get-WmiObject -Class Win32_Bios -Computername COMPUTERNAME | Export-Csv -Path computerserials.csv -Append -NoTypeInformation

要遍历一堆计算机名称,请创建一个文本文件,每行只有一个计算机名称,并执行类似的操作,但这需要您远程执行。

Get-WmiObject -Class Win32_Bios -Computername (Get-Content computerlist.txt) | Select-Object PSComputerName,SerialNumber | Export-Csv -Path computerserials.csv -Append -NoTypeInformation

这些示例是获取计算机名称和序列号。如果你还需要其他任何东西,它很容易直接从WMI中取出而不是使用WMIC的kludge。