顯示具有 wmic 標籤的文章。 顯示所有文章
顯示具有 wmic 標籤的文章。 顯示所有文章

2009年5月20日 星期三

wmic學習過程2

列出參數
ex: wmic computersystem list full

-----
where的用法

對為別名返回的特定實例使用 WHERE () 子句。
? WHERE() 子句必須包括 WHERE 子句以進行有效的 WQL 查詢。只有複雜的條件才需要括號。請查看 WQL 語法的 WMI SDK。WHERE() 子句必須緊隨在別名之後。例如: process where (processID>300) list brief

? 當 WHERE 子句是 WHERE NAME='' 時,只提供值就足夠了。例如: SERVICE CLIPSRV
代替:
SERVICE WHERE NAME='CLIPSRV'

使用 /OUTPUT、/APPEND 和 /RECORD 命令重定向輸出。
? 以 HTML 格式輸出的命令(如 CLASS)通常將它們的輸出定向到一個文件。然後可以查看該文件,以瞭解命令的結果。可以使用 /OUTPUT、/APPEND 和 /RECORD 命令重定向輸出。

如果值包含特殊字符(短劃線、斜槓或空格),則請用引號將值括起來。
對於大的域或數據庫,請使用以下查詢的方法
? ALIAS
WMIC ALIAS PROCESS LIST BRIEF

? USERACCOUNT
WMIC USERACCOUNT WHERE "Name='PutUserNameHere' and Domain='PutDomainNameHere'"

? FSDIR
WMIC FSDIR WHERE Name='c:\\WINDOWS'

? DATAFILE
WMIC DATAFILE WHERE Name="c:\\boot.ini" WMIC DATAFILE WHERE "PATH='\\windows\\' and Extension='exe' and FileSize>'108032'" GET LastAccessed, LastModified, Name, FileSize

? NTEVENT
WMIC NTEVENT WHERE "LogFile='system' and Type>'0'" GET Message, TimeGenerated WMIC NTEVENT WHERE "LogFile='system' and Type>'0'" GET Message, TimeGenerated /FORMAT:htable >c:\MySystemEvents.htm

? 查詢:
使用引號 "" 將 WHERE 表達式分開,而不用括號 ():
WMIC NTEVENT WHERE "LogFile='system' and Type>'4'"
[ 比較:WMIC NTEVENT WHERE (LogFile='system' and TYPE>4)
在這種情況下,命令行解釋器將曲解 ">4)"
並試圖將輸出重定向到指定文件 "4)" ]

-----
實例:
DESKTOPMONITOR - 監視器管理
::獲取屏幕分辨率
wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth

DISKDRIVE - 物理磁盤驅動器管理
::獲取物理磁盤型號大小等
wmic DISKDRIVE get Caption,size,InterfaceType

WMIC在批處理的應用實例(轉)
原文章來源地址 http://www.verybat.cn/bbs/bbs/viewthread.php?tid=8188&highlight=

第一次使用WMI會自動安裝,等待數秒即可正常使用。

wmic 獲取硬盤固定分區盤符:
for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get name') do @echo %%i
簡要說明:
wmic + 欲操作的對象名+ where 從句(這是篩選條件)+ get + 對象的屬性
這樣的格式已經可以幫助我們獲取很多東西了,大家可以具體參考
查看wmic對象: wmic /?
查看wmic對象有何可用屬性: wmic 對象名稱 get /? 例如 wmic process get /?
查看wmic對象某個屬性的值: wmic 對象名稱 get 對象某個屬性 例如 wmic process get name
ps: 以上例子中的drivetype的值為2 表示可移動磁盤或軟盤,值為3表示固定磁盤,值為5表示光驅。


wmic 獲取進程名稱、可執行路徑、刪除、創建指定進程
:
wmic 獲取進程名稱以及可執行路徑:
wmic process get name,executablepath

wmic 刪除指定進程(根據進程名稱):
wmic process where name="qq.exe" call terminate
或者用
wmic process where name="qq.exe" delete

wmic 刪除指定進程(根據進程PID):
wmic process where pid="123" delete

wmic 創建新進程
wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"

其實都很容易上手的,大家多用用就會熟悉這種模式了
詳細信息用 wmic process get /? 查看所有可用的屬性

wmic 操作遠程計算機上的程序

在遠程機器上創建新進程:(2003系統)
wmic /node:192.168.1.10 /user:administrator /password:123456 process call create cmd.exe

關閉本地計算機
wmic process call create shutdown.exe

重啟遠程計算機 (2003系統)
wmic /node:192.168.1.10/user:administrator /password:123456 process call create "shutdown.exe -r -f -m"

wmic 操作計算機名稱和用戶帳戶
更改計算機名稱
wmic computersystem where "caption='%ComputerName%'" call rename newcomputername

更改帳戶名
wmic USERACCOUNT where "name='%UserName%'" call rename newUserName


wmic 結束可疑進程(根據進程的啟動路徑)
wmic process where "name='explorer.exe' and executablepath<>C:\\WINDOWS\\windows\\explorer.exe'" delete

wmic 獲取物理內存
wmic memlogical get TotalPhysicalMemory|find /i /v "t"

wmic 獲取文件的創建、訪問、修改時間 (tvzml糾正)
@echo off
for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="C:\\WINDOWS\\NOTEPAD.EXE" get CreationDate^,LastAccessed^,LastModified') do set a=%%a & set b=%%b & set c=%%c
echo 文件名稱: %WINDIR%\NOTEPAD.EXE
echo 創建時間: %a:~0,4%年%a:~4,2%月%a:~6,2%日, %a:~8,2%:%a:~10,2%:%a:~12,2%
echo 修改時間: %c:~0,4%年%c:~4,2%月%c:~6,2%日, %c:~8,2%:%c:~10,2%:%c:~12,2%
echo 訪問時間: %b:~0,4%年%b:~4,2%月%b:~6,2%日, %b:~8,2%:%b:~10,2%:%b:~12,2%
pause

wmic 全盤搜索某文件並獲取該文件所在目錄
for /f "skip=1 tokens=1*" %i in ('wmic datafile where "FileName='qq' and extension='exe'" get drive^,path') do (set "qPath=%i%j"&@echo %qPath:~0,-3%)

wmic 獲取屏幕分辨率
wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth

更改當前頁面文件初始大小和最大值,重啟計算機後生效
wmic PageFileSet set InitialSize="512",MaximumSize="512"

設置虛擬內存到E盤,並刪除C盤下的頁面文件,重啟計算機後生效
wmic PageFileSet create name="E:\\pagefile.sys",InitialSize="1024",MaximumSize="1024"
wmic PageFileSet where "name='C:\\pagefile.sys'" delete

獲得進程當前佔用的內存和最大佔用內存的大小:
wmic process where caption='filename.exe' get WorkingSetSize,PeakWorkingSetSize

wmic學習過程

---
轉自 : http://9527dos.yo2.cn/articles/%E6%88%91%E6%98%AF%E8%BF%99%E6%A0%B7%E5%AD%A6%E4%B9%A0wmic%E7%9A%84.html
---
簡介 : 可以控制遠端電腦的
*帳號密碼設定
*檔案管理(copy del move)
*process管理 (create terminate)
*設定網路 (proxy ip domain)


-----


首先在這裡聲明一下,以下資料都是在我學習WMIC命令積累的一些實例。
如要轉載請標明出處!!!

Datafile 別名

C:\>wmic datafile "c:\\hello.txt" call rename c:\ppp.txt
執行 (\\QL-LIBOWEN\ROOT\CIMV2:CIM_DataFile.Name="c:\\hello.txt")->rename()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

C:\>wmic datafile Where "drive='d:' and extension='txt' and path='\\'" get name
Name
d:\abc.txt
d:\復件 abc.txt

WMIC FSDIR別名

wmic fsdir where(name='c:\\good') delete
wmic fsdir where(name='c:\\good') call delete
刪除c:\good文件夾

wmic fsdir where(name='c:\\good') rename "c:\abb"
重命名c:\good文件夾為abb

複製文件夾

C:\>wmic fsdir where(name='d:\\test') call copy "c:\ppcd"
執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_Directory.Name="d:\\test")->copy()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

複製D盤下TEST文件夾的所有文件到C盤下的PPCD,如果PPCD存在直接複製過去,如果不存在他會自動創建並將文件複製過去

C:\>wmic fsdir where(name='d:\\test') call Compress
執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_Directory.Name="d:\\test")->Compress()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

壓縮指定文件夾,以便節省磁盤空間

C:\>wmic fsdir where(name='d:\\test') call unCompress
執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_Directory.Name="d:\\test")->unCompress()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

解除壓縮文件夾

Job 別名

C:\>wmic job call create "sol.exe",0,0,1,0,********154600.000000+480
執行 (Win32_ScheduledJob)->Create()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
JobId = 1;
ReturnValue = 0;
};

這個命令和AT命令是一模一樣啊,AT添加的計劃任務他可以看到,他添加的同樣AT命令也是可以看到

wmic job call create "sol.exe",0,0,true,false,********154800.000000+480
wmic job call create "sol.exe",0,0,1,0,********154600.000000+480

這兩句是相同的,TRUE可以用1表示,同樣的FALSE可以用0值表示,時間前為何用八個星號,這是WMIC的特性,他顯示時間的方式是YYYYMMDDHHMMSS.MMMMMM+時區 ,可是,我們並不需要指定年份和月份還有天,所以用*星號來替代

Os 別名

wmic os Where (primary='1') call win32shutdown *

這個*參數可以有如下值:

Const LOGOFF=0

Const SHUTDOWN=1

Const REBOOT=2

Const FORCE=4

Const POWEROFF=8

這些參數可以進行任意組合,例如:

強制註銷:4 (0+4)的組合
強制關機:5 (1+4)的組合
強制重啟:6 (2+4)的組合
強制關閉電源:12 (8+4)的組合

WMIC設置系統時間

要求需要有管理員權限

wmic os where(primary=1) call setdatetime 20070731144642.555555+480

執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_OperatingSystem.Name="Microsoft Windows XP P
rofessional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1")->setdatetime()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

Process 別名

C:\>wmic process call create sol.exe
執行 (Win32_Process)->Create()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ProcessId = 3848;
ReturnValue = 0;
};

C:\>wmic process 3848 call terminate
執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_Process.Handle="3848")->terminate()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

可以看出PROCESS別名是以HANDLE屬性為默認屬性進行操作的

C:\>wmic process 2556 call setpriority 64
執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_Process.Handle="2556")->setpriority()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

用來設置程序的優先權

64 Idle 優先權--低
16384 Below Normal 優先權--低於標準
32 Normal 優先權--標準
32768 Above Normal 優先權--高於標準
128 High Priority 優先權--高
256 Real Time 優先權--實時

wmic process Where "processid='%pid%'" call Terminate

wmic process Where "name='%imagename%'" call Terminate

wmic path Win32_Process.name="%imagename%" call Terminate

wmic path Win32_Process.processid="%pid%" call Terminate

wmic process Where name='sol.exe' delete

Nicconfig 別名

wmic nicconfig where(index='8') call enablestatic "192.168.1.81","255.255.255.0"   
設置IP地址和子網掩碼

wmic nicconfig where(index='8') call setgateways "192.168.0.1",1          
設置網關和躍點數

wmic nicconfig where(index='8') call setdnsdomain ("192.168.0.1","192.168.0.11")  
設置DNS服務器地址,設置完畢後不會馬上生效,必需要設置主次才可以生效

wmic nicconfig where(index='8') call SetDNSServerSearchOrder ("192.168.0.1","192.168.0.11") 
設置DNS服務器地址的主次順序,192.168.0.1在前表示為首選DNS地址,在後為備用DNS地址

wmic path Win32_NetworkAdapterConfiguration.index=8 call enabledhcp

WMIC默認的NICCONFIG別名是不提供enabledhcp這個方法的,所以我們只能調用他的WMI函數來設置動態分配IP地址的設置

wmic nicconfig where(index='8') get /value  INDEX值為你當前網卡的索引值,每台機器都不一樣

以下為網絡方面設置的各個屬性值:

ArpAlwaysSourceRoute=
ArpUseEtherSNAP=
Caption=[00000008] Broadcom 440x 10/100 Integrated Controller
DatabasePath=%SystemRoot%\System32\drivers\etc
DeadGWDetectEnabled=
DefaultIPGateway={"192.168.0.1"}
DefaultTOS=
DefaultTTL=
Description=Broadcom 440x 10/100 Integrated Controller - 數據包計劃程序微型端口
DHCPEnabled=FALSE
DHCPLeaseExpires=
DHCPLeaseObtained=
DHCPServer=
DNSDomain=("192.168.0.1","192.168.0.11")
DNSDomainSuffixSearchOrder=
DNSEnabledForWINSResolution=FALSE
DNSHostName=ql-libowen
DNSServerSearchOrder={"192.168.0.1","192.168.0.11"}
DomainDNSRegistrationEnabled=FALSE
ForwardBufferMemory=
FullDNSRegistrationEnabled=TRUE
GatewayCostMetric={1}
IGMPLevel=
Index=8
IPAddress={"192.168.0.81"}
IPConnectionMetric=20
IPEnabled=TRUE
IPFilterSecurityEnabled=FALSE
IPPortSecurityEnabled=
IPSecPermitIPProtocols={"0"}
IPSecPermitTCPPorts={"0"}
IPSecPermitUDPPorts={"0"}
IPSubnet={"255.255.255.0"}
IPUseZeroBroadcast=
IPXAddress=
IPXEnabled=FALSE
IPXFrameType=
IPXMediaType=
IPXNetworkNumber=
IPXVirtualNetNumber=
KeepAliveInterval=
KeepAliveTime=
MACAddress=00:0F:1F:4F:08:A0
MTU=
NumForwardPackets=
PMTUBHDetectEnabled=
PMTUDiscoveryEnabled=
ServiceName=bcm4sbxp
SettingID={B97AA60A-483E-4C84-84FE-5A3C6A875B65}
TcpipNetbiosOptions=0
TcpMaxConnectRetransmissions=
TcpMaxDataRetransmissions=
TcpNumConnections=
TcpUseRFC1122UrgentPointer=
TcpWindowSize=
WINSEnableLMHostsLookup=TRUE
WINSHostLookupFile=
WINSPrimaryServer=
WINSScopeID=
WINSSecondaryServer=

WMIC對註冊表的操作

C:\>wmic /namespace:\\root\default path stdregprov call getstringvalue ^&H80000002,"SOFTWARE\libowen","hello"

執行 (stdregprov)->getstringvalue()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
sValue = "I am Computer Pepole!!!";
};

C:\>wmic /namespace:\\root\default path stdregprov call createkey ^&h80000001,"libowen\good"

----建立libowen\good 這個鍵值

執行 (stdregprov)->createkey()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

C:\>wmic /namespace:\\root\default path stdregprov call deletekey ^&h80000001,"libowen\sdd"  

---刪除鍵值SDD,注意此鍵值必須是最底層

執行 (stdregprov)->deletekey()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

C:\>wmic /namespace:\\root\default path stdregprov call EnumKey ^&h80000001,"Keyboard Layout"

-----枚舉Keyboard Layout下的所有子鍵值

執行 (stdregprov)->EnumKey()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
sNames = {"preload", "Substitutes", "Toggle"};
};

C:\>wmic /namespace:\\root\default path stdregprov call Enumvalues ^&h80000001,"Keyboard Layout\preload"

--------枚舉Keyboard Layout\preload這個鍵值下的所有數值及其數值所對應的類型

執行 (stdregprov)->Enumvalues()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
sNames = {"1", "2", "3"};
Types = {1, 1, 1};
};

C:\>wmic /namespace:\\root\default path stdregprov call SetStringValue ^&h80000001,"libowen\test","hello world!","test"

------建立一個名為test的string的數值,值為hello world!

執行 (stdregprov)->SetStringValue()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

C:\>wmic /namespace:\\root\default path stdregprov call SetStringValue ^&h80000001,"libowen\test","test","aabb"

-----修改aabb的數值為test

執行 (stdregprov)->SetStringValue()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

REG_SZ (1)
REG_EXPAND_SZ (2)
REG_BINARY (3)
REG_DWORD (4)
REG_MULTI_SZ (7)

HKEY_CLASSES_ROOT (0x80000000)
HKEY_CURRENT_USER (0x80000001)
HKEY_LOCAL_MACHINE (0x80000002)
HKEY_USERS (0x80000003)
HKEY_CURRENT_CONFIG (0x80000005)
HKEY_DYN_DATA (0x80000006)

Pagefileset 別名

C:\>wmic pagefileset get /value

Caption=C:\ 'pagefile.sys'
Description='pagefile.sys' @ C:\
InitialSize=384
MaximumSize=768
Name=C:\pagefile.sys
SettingID=pagefile.sys @ C:

用來察看本地計算機虛擬內存情況,初始大小,最大值,保存位置等

下面我們可以改變虛擬內存文件(也就是我們常說的頁面文件) 所在位置以及初始大小和最大值

wmic pagefileset set initialsize=512,maximumsize=1024
這個只是改變初始大小和最大值,SET不能修改頁面文件所存放的位置,也就是說默認頁面文件在C盤這時不能把他的位置修改到D盤,如果要修改到D盤我們可以這樣來做

wmic pagefileset create name='d:\pagefile.sys',initialsize=512,maximumsize=1024

然後刪除以前的就可以了,請看

wmic pagefileset where(name='c:\\pagefile.sys') delete

這樣就實現了把頁面文件轉移到D盤的效果

WMIC設置代理服務器

C:\>wmic path win32_proxy get /value

Caption=
Description=
ProxyPortNumber=
ProxyServer=:
ServerName=ql-libowen.ql-art.com
SettingID=

C:\>wmic path win32_proxy Where ServerName='ql-libowen.ql-art.com' call setproxysetting "8080","192.168.1.59"

執行 (\\QL-LIBOWEN\root\cimv2:Win32_Proxy.ServerName="ql-libowen.ql-art.com")->s
etproxysetting()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

C:\>wmic path win32_proxy.servername="ql-libowen.ql-art.com" call setproxysetting "",""
執行 (\\QL-LIBOWEN\root\cimv2:Win32_Proxy.ServerName="ql-libowen.ql-art.com")->s
etproxysetting()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

WMIC 設置共享

輸入參數是 OBJECT 類型
原因:對於 OBJECT 類型的輸入參數,還沒有實現全面支持。默認值(空字符串:"")是目前支持的唯一值。

解決方案:使用下面的命令為三個用戶設置 c:\test 目錄的共享:

WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0

建立共享文件夾

C:\>WMIC SHARE where(path='c:\\test') call delete

執行 (\\QL-LIBOWEN\ROOT\CIMV2:Win32_Share.Name="TestShareName")->delete()
方法執行成功。
輸出參數:
instance of __PARAMETERS
{
ReturnValue = 0;
};

WMIC對於共享文件夾操作

C:\>WMIC SHARE where(path='c:\\test') delete
刪除範例 \\QL-LIBOWEN\ROOT\CIMV2:Win32_Share.Name="TestShareName"
範例刪除成功。

Type (共享類型)

Type of resource being shared. Types include: disk drives, print queues, interprocess communications (IPC), and general devices.

Value Meaning

0-----Disk Drive
1-----Print Queue
2-----Device
3-----IPC
2147483648----Disk Drive Admin
2147483649----Print Queue Admin
2147483650----Device Admin
2147483651----IPC Admin

Computersystem 別名

wmic computersystem Where "name='原計算機名稱'" call rename "要修改的計算機名"

主要功能:修改計算機名稱

wmic computersystem Where "name='計算機名稱'" call joindomainorworkgroup "","","MyGroup"

主要功能:更改現有工作組為指定的工作組

wmic computersystem Where "name='計算機名稱' call UnjoinDomainOrWorkgroup

主要功能:退出所在域

wmic computersystem Where "name='計算機名稱'" call joindomainorworkgroup "",1,"域名稱","域管理員密碼","域管理員用戶名"

例如:想要加入到的域名稱為QLART ,域管理員用戶名應該為 administrator@ql-art.com 或qlart\administrator 密碼為:XXXXXX

Useraccount 別名

C:\>wmic useraccount where(LocalAccount='1' and name='good') set disabled=true

更新 '\\QL-LIBOWEN\ROOT\CIMV2:Win32_UserAccount.Domain="QL-LIBOWEN",Name="good"'
的屬性
屬性更新成功。

C:\>wmic useraccount where(LocalAccount='1' and name='good') set fullname="hello world!"

更新 '\\QL-LIBOWEN\ROOT\CIMV2:Win32_UserAccount.Domain="QL-LIBOWEN",Name="good"'
的屬性
屬性更新成功。

C:\>wmic useraccount where(localaccount=true and name='good') set passwordchangeable=true

更新 '\\QL-LIBOWEN\ROOT\CIMV2:Win32_UserAccount.Domain="QL-LIBOWEN",Name="good"'
的屬性
屬性更新成功。

C:\>wmic useraccount Where "domain='ql-libowen' and name='libowen'" set PasswordExpires=false

更新 '\\QL-LIBOWEN\ROOT\CIMV2:Win32_UserAccount.Domain="QL-LIBOWEN",Name="libowe
n"' 的屬性
屬性更新成功。