天道酬勤,学无止境

wmic

在一行中获取命令提示符(Get command prompt out on one line)

问题 我正在尝试获取所有本地磁盘的型号和大小。 我想为每个磁盘在一行上输出。 示例:型号 Samsung 大小 500GB @echo off for /f "tokens=2 delims==" %%d in ('wmic diskdrive get Model,Size /value') do ( set Model=%%d set Size=%%d ) echo Model %Model% Size %Size% pause 但没什么。 回答1 由于模型描述可能包含空格,您需要将输出格式化为csv ,因此输出由逗号分隔(我希望没有包含逗号的模型描述 - 我目前没有看到)。 如果没有/value每个磁盘都列在一行( Node,Model,Size )中,因此您需要tokens=2,3 。 添加skip=2以删除标题行并将您的固定字符串添加到最终输出: for /f "skip=2 tokens=2,3 delims=," %%a in ('"wmic diskdrive get Model,Size /format:csv"') do @echo Model %%a Size %%b 回答2 这是在当前所有受支持的 Windows 机器上执行此操作的一种方法。 既定的目标是“一条线”。 如果您想在单独的变量中使用模型和大小,还有更多工作要做。 powershell

2021-10-24 23:06:25    分类:技术分享    cmd   wmi   wmic

如何在 Windows 批处理脚本中格式化日期/时间输出?(How to format date/time output in a Windows batch script?)

问题 我正在编写一个简单的批处理脚本来获取 PC 重新启动的最后日期/时间。 找到了两个简单的方法: systeminfo | find /i "Boot Time" systeminfo | find /i "Boot Time"输出: 系统启动时间:5/4/2019, 5:04:44 AM wmic os get lastbootuptime输出: 上次启动时间 20190504050444.500000-420 我基本上希望将第二个的输出格式化为与第一个相同或相似(可读的东西)。 在较新的 PC 上,第一个运行良好,但我们的大多数客户仍在运行 Windows 7,第一个加载需要很长时间,而第二个即使在比 Windows 7 更旧的操作系统上也能立即加载。 我想把第二个的输出到一个变量并做正则表达式的东西: for /f %%i in ('wmic os get lastbootuptime') do set lastboottime=%%i 但我不断收到"%%i was unexpected at this time"错误。 我是 PowerShell 用户,对批处理语法一无所知。 回答1 使用 wmic 可以让您控制所需的输出字符串,但如果系统以前从未运行过WMIC ,则可能需要一些时间才能运行。 您面临的问题是由于WMIC输出中使用的行尾,这可以通过仅设置变量来解决,

2021-10-24 17:27:39    分类:技术分享    datetime   batch-file   command-line   formatting   wmic

使用 Windows 帐户列表使用 SIDS 添加注册密钥(Use List of Windows accounts to add reg keys using SIDS)

问题 编辑重新解释以改进答案。 项目 作为第三方工程师,我正在访问一个站点以安装一个软件。 基础设施“非常”锁定。 我将获得当天安装软件的管理员帐户。 但是,为了让所有用户(不仅仅是管理员登录)都能正常运行该软件,IT 部门已指示我。 手动创建一个密钥,然后在创建的密钥中为 PC 上的每个用户帐户添加一个字符串值。 我们在标准环境中的软件使用所有用户注册密钥来满足此要求,但它不会在这些特定位置运行(不允许 - 不要问!)。 他们想要 KEY 的位置在 reg 中的 HKEY_USERS 路径中:- HKEY_USERS\S-1-5-21-XXXXXXXXX-XXXXXXXXX-XXXXXXXXXX-XXXXX\Software\Microsoft\ 假设有 2 个人登录了这台 PC,他们稍后需要使用我们的软件 约翰·琼斯 玛丽雪莱 我需要找到与 john jones 相关的 sid,然后在 HKEY_USERS 中将密钥添加到他的部分 然后我需要找到 mary.shelley sid,然后找到她的 HKEY_USERS 部分的密钥,等等。 现在我从我工作的环境中知道那里可能有 20 多个用户帐户,所以我真的希望避免为我正在安装的每台 PC 上的所有帐户一遍又一遍地手动添加他们的密钥。 一个登录脚本会更好,但这是我目前必须处理的全部。 现在的脚本状态 @echo off REM

2021-10-24 14:26:39    分类:技术分享    batch-file   wmic

C++ How do I pass a system serial number into a variable?

I've been able to retrieve my system serial number, but how do I pass the serial number itself into a variable? int main() { char newSerial; int (*ptr) (const char[]); ptr = system; ptr("wmic bios get serialnumber"); } After running my code, the screen displays: SerialNumber xxxxxxxxxxxxx exactly like this. But what I want is to pass just the "x's" into a char variable since it has a dash in it. Where exactly is the program calling the serial number from? Any suggestions? (Windows 7 x64)

2021-10-24 06:11:25    分类:问答    windows   variables   serial-number   wmic

通过 wmic 远程执行包含 exe 路径的批处理文件(Executing a batch file containing an exe path remotely via wmic)

问题 我在 Computer-A 上有一个批处理文件,其中包含几个命令和一个 exe 文件的路径。 当我通过 wmic 在 Computer-B 上执行批处理文件时,我可以看到批处理文件中正在执行的所有命令,除了它不运行 exe。 我需要检查哪些内容才能了解为什么 .exe 不在计算机 A 上执行? wmic执行: wmic /node:"<server_ip>" /user:domain\user /PASSWORD:"password" /OUTPUT:STDOUT process call create "cmd.exe /c C:\Folder\batch.bat" 回答1 wmic 中的文件路径需要是 c 样式路径。 所以C:\\somefolder\\somefile.ext 。 \\用于路径中的\ 。

2021-10-23 12:23:39    分类:技术分享    wmi   wmic

Executing a batch file containing an exe path remotely via wmic

I have a batch file on Computer-A that contains several commands and a path to an exe file. When I execute the batch file on Computer-B via wmic, I can see all the commands being executed in the batch file except that it does not run the exe. What are the things I need to check for to see why the .exe is not being executed on Computer-A? wmic execution: wmic /node:"<server_ip>" /user:domain\user /PASSWORD:"password" /OUTPUT:STDOUT process call create "cmd.exe /c C:\Folder\batch.bat"

2021-10-23 06:39:06    分类:问答    wmi   wmic

Get command prompt out on one line

I am trying to get Model and Size of all local disks. I want to output on one line for each disk. Example: Model Samsung Size 500GB @echo off for /f "tokens=2 delims==" %%d in ('wmic diskdrive get Model,Size /value') do ( set Model=%%d set Size=%%d ) echo Model %Model% Size %Size% pause But nothing.

2021-10-23 00:03:05    分类:问答    cmd   wmi   wmic

cmd:将 wmic 输出保存到变量(cmd: save wmic output to variable)

问题 我正在尝试将文件的时间戳放入批处理文件中的变量中。 我的批处理文件 imagetime.bat 包含以下内容: set targetfile=%~1 set targetfile=%targetfile:\=\\% echo %targetfile% for /f "usebackq delims=" %%i in ( `wmic datafile where name^="%targetfile%" get creationdate` ) do ( echo %%i ) echo %timestamp% 我得到这个输出: C:\>imagetime.bat V:\setup.exe C:\>set targetfile=V:\setup.exe C:\>set targetfile=V:\\setup.exe C:\>echo V:\\setup.exe V:\\setup.exe C:\>for /F "usebackq delims=" %i in (`wmic datafile where name="V:\\setup.exe" g et creationdate`) do (echo %i ) ) (echo CreationDate reationDate ) (echo 20110412103858.000000+*** 0110412103858

2021-10-21 13:32:51    分类:技术分享    batch-file   cmd   wmic

Remotely get serial number and model from list in batch script

I am trying to create a simple script that will use computer name from pclist.txt and get serial number and model and export to csv file. I just can not seem to figure out why it does not print the serial number and model in the csv file. Here is my simple script. @echo off for /f %%i in (pclist.txt) do ( for /f "tokens=2 delims==" %%M in ('wmic /node:%%i csproduct get name /value') do set "Model=%%M" for /f "tokens=2 delims==" %%I in ('wmic /node:%%i bios get serialnumber /value') do set "SN=%%I" echo %%i, %SN%, %Model% >> list.csv ) pause

2021-10-21 13:02:18    分类:问答    list   batch-file   remote-access   wmic   serial-number

在批处理文件中使用 WMIC 卸载程序(Using WMIC in a batch file to uninstall a program)

问题 我正在编写一个脚本来卸载程序。 我正在利用 WMIC 来做到这一点。 当我运行脚本时,它会在 wMIC 命令运行后立即停止。 手动运行时一切正常。 我的脚本如下所示: @echo off title Forcepoint DLP Endpoint Echo Forcepoint DLP Endpoint wmic product where name="Forcepoint DLP Endpoint" call uninstall /nointeractive 为了继续脚本,我应该在“WMIC”之后添加什么? 手动输入时,此脚本有效: wmic product where name="Forcepoint DLP Endpoint" call uninstall Y 回答1 尝试使用: @Echo Off Title Forcepoint DLP Endpoint Echo Forcepoint DLP Endpoint WMIC Product Where "Name='Forcepoint DLP Endpoint'" Call Uninstall /NoInteractive 如果这不起作用,那么也许这可能: @Echo Off Title Forcepoint DLP Endpoint Echo Forcepoint DLP Endpoint Echo Y|WMIC

2021-10-21 10:46:16    分类:技术分享    batch-file   wmic