整理一些Windows桌面運維常用的命令,並且整合成腳本

github地址:alittlemc/toy: 編寫些腳本將運維經常所用到小玩意所集成在一起 (github.com)

名字叫toy吧,沒有啥技術含量,幫不了大忙,但是可以作為在一旁遞工具的小弟,還是可減少自己一定的工作量的,畢竟有一些太長的命令也不是很好記憶的,Windows按tab又不出提示!

持續更新!

前言

做過桌面運維的大佬們應該可以很明顯感受到這份工作所需要的技能不高,但是內容很雜,很煩索,有時候內容重複性很多,同時也很浪費運維人員的寶貴青春,時間久了對這份工作就產生了厭惡的情緒,人覺得不爽。今天心血來潮寫一份腳本(今天10月4日我以為要加班,就來辦公室了,結果空無一人,乾脆閑來無事寫一下)。隨便分享一下桌面運維需要學會的一些命令。

使用場景

桌面運維大部分是和系統打交道。

模擬一下背景,現在有一些企業是配備Windows電腦使用AD域來集中的管理電腦用戶。也就是每一次當有新電腦需要使用時候,除了設置賬號密碼、分區、安裝操作系統等等步驟,還需要給新配置AD域、安裝標準化的軟件等等操作。

具體的步驟有:

  1. 在AD域中添加用戶,設置好賬號權限
    • 登錄到(限制電腦登錄設備、登錄時間)
  2. 去電腦現場配置好電腦
    • 安裝系統、分區
    • 設置主機名、設置域、安裝指定的軟件、修改本地administrator密碼

 大致可以分為這兩步,其中最麻煩的一步就是在電腦現場配置,電腦批量安裝軟件要登錄到域賬號中安裝軟件,因為域賬號沒有安裝軟件的權限,所以需要切換的本地的.\administrator賬號的身份去安裝。對着安裝程序按Shift選擇其他賬戶登錄,才可安裝,每一次安裝新的程序還要重新登錄,浪費了大量時間。

圖1.郵件以其他用戶運行

  

再加上桌面運維和系統打交道,有一些故障其實其實都是類似的,比如需要重新啟動網卡才可以解決、需要重置輸入法、需要重置網絡設置等等解決方法。

又或者是命令太多,功能太多,比如註冊表經常用,regedit的啟動命令就還記得,但是組策略、系統組件用得比較少的一點陌生記不住。如果可以寫個腳本,把這些問題的解決方法都集成到一起,遇到問題一步到位那麼解決問題就很方便了。

於是我想寫一個項目toy,把我在運維上遇到問題整理來解決:

  • 批量的解決問題命令
  • 打開程序的方式匯總

WindowsToy v1.0

大概介紹

 

圖2.WindowsToy目前擁有的功能

其實初衷很簡單,就是可以輔助運維人員快速解決問題或者當個遞工具的小弟也可以。

這個腳本是使用bat編寫的,之前使用if else語句來生成全部,發現經常有bug,乾脆就使用編程的流氓goto來實現,目前使用goto來實現,效果類似於switch case的效果。 話說bat真的無語啊,經常有錯的地方,比如for內的需要括號轉義,bat相比於python、lua之類的腳本語言不適合作為開發,但是奈何目前桌面運維遇到的大部分都是接觸到Windows的多,插個U盤直接雙擊直接可以使用bat,不需要配置安裝python、lua的解釋環境,所以嘛,也只好大概講究一下。

功能

在cmd中切換用戶

也許你經常遇到一些情況,win+r開啟cmd窗口,鍵入一些命令執行,然後提示權限不夠,一般情況我們都可以在右鍵「以管理員方式運行」,但是也可以使用命令來實現:

  • 當前cmd窗口提升為administrator權限
net user administrator /active:yes
  • 使用administrator新開的cmd窗口
net user administrator cmd

當然,這裡的命令可以靈活點使用,使用其他用戶將administrator修改即可。

重置網絡設置

有時候Windows不知道發生了啥情況,網絡無法使用,就連重新啟動大法都不管用了,這時候可以嘗試重置網絡設置

netsh winsock reset

重置輸入法

輸入法有時候也不知道藏哪去了,打字也不出來,重置一下吧。

ctfmon

批量安裝

就像之前說的,因為域賬號沒有安裝軟件的權限,所以需要切換的本地的.\administrator賬號的身份去安裝,但是每一個安裝程序安裝都要輸入一次賬號密碼。

我寫了個小腳本來實現,對當前目錄(即可bat所在或者執行所在目錄)下的常見可執行程序後綴進行安裝打開。只需要第一次切換為administrator賬號,後面的軟件包都會使用administrator權限進行安裝。

for %%f in (*.msu,*.msi,*.exe) do ( start /wait %%f )

設置hostname

設置主機名,方便DHCP和DNS服務器管理

netdom.exe renamecomputer %COMPUTERNAME% /newname:域地址

源代碼

@echo off
echo %~0 by alittlemc;version 1.0;updatetime 2022-10-04echo hostname %COMPUTERNAME%;user %USERNAME%
:start0
echo ----------====start====----------
echo        ID    NOTES
echo     00    退出
echo     0    切換到administrator執行
echo      0a    切換到指定用戶執行
echo     1    重置網絡設置
echo     2    修復輸入法
echo     3    清空回收站
echo     4    批量安裝%~dp0目錄下全部*.msu,*.msi,*.exe可執行文件
echo     5    重命計算機名字
echo     6    新電腦設置域
echo      6a    老電腦修改域
echo.
set dev=設備管理器(devmgmt.msc)
set reg=註冊表(regedit)
set dco=系統組件(dcomcnfg)
set com=計算機管理(compmgmt.msc)
set mst=遠程桌面(mstsc)
set cle=磁盤清理(cleanmgr)
set lus=本機用戶/組(lusrmgr.msc)
set osk=屏幕鍵盤(osk)
set info=顯示系統信息
set win=檢查Windows系統(winver)
set fsm=共享文件夾管理(fsmgmt.msc)
set gpe=組策略(gpedit.msc)
set uti=輔助功能(utilman)
set off=註銷(logoff)

echo         =其他=
echo     01    %dev%
echo     02    %reg%
echo     03    %dco%
echo     04    %com%
echo     05    %mst%
echo     06    %cle%
echo     07    %lus%
echo     08    %osk%
echo     09    %win%
echo     10    %fsm%
echo     11    %gpe%
echo     12    %uti%
echo     off    %off%
echo     info    %info%
::echo systemreset 重置Windows
::echo systemreset-cleanpc 更新並重置Windows
echo.

set /p sr=請輸入需要的功能ID:
goto %sr% 2>nul||echo 未匹配到的ID&%~0%&pause>nul

:0
    echo get administrator
    net user administrator /active:yes
    echo administrator
goto start

:0a
    set /p user=輸入用戶名:
    echo change %user%
    net user  %user% /active:yes
    echo %user%
goto start

:00
    exit
goto start

:1
    echo 重置網絡設置(netsh winsock reset)
    set y=<nul
    set /p y=確認重置網絡?(y/n)
    if %y%==y (netsh winsock reset)
    set y=<nul
goto start

:2
    echo 修復輸入法(ctfmon)
    ctfmon
goto start

:3
    echo 清空回收站
    set y=<nul
    set /p y=確認清空回收站?(y/n):
if %y%==y (
::清空Win7/Win8回收站
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%a: (
del /f /s /q "%%a:$recycle.bin*.*" >nul 2>nul
)
)
::清空XP回收站
del /f /s /q "%systemdrive%
ecycled*.*" >nul 2>nul
echo 清空回收站完成!
) else (echo no)
set y=<nul
goto start

:4
    setlocal enabledelayedexpansion
    echo 批量安裝
    set y=<nul
    set /p "y=安裝當前目錄中可執行程序?(y/n)"
    for %%f in (*.msu,*.msi,*.exe) do ( start /wait %%f )
::子目錄也安裝/R 默認安裝/s        
    set y=<nul
goto start

:5
    :rename
    set y=<nul
    echo 當前的主機名:%COMPUTERNAME%
    set /p id=請輸入新主機名:
    set /p y=確認將%COMPUTERNAME%修改為%id%?(y/n/r)
    if %y%==r (goto rename)
    if %y%==y (netdom.exe renamecomputer %COMPUTERNAME% /newname: %id%)
    echo 當前的主機名:%COMPUTERNAME%
goto start

:6
    :redomain
    set /p domain=請輸入AD域名:
    set /p y=確認將域更新為%domain%?(y/n/r)
    if %y%==r (goto redomain)
    if %y%==y (netdom join %COMPUTERNAME% /DOMAIN:%domain%)
::/UserD:%user%(用戶帳號) /PasswordD:%passwd%(用戶密碼)

goto start

:info
    hostname
    wmic baseboard list brief
    wmic bios get serialnumber
    ::wmic nic get macaddress 
    
    wmic cpu get caption, name, deviceid, numberofcores, maxclockspeed, status
    
    wmic memorychip get banklabel,devicelocator,capacity,speed
    wmic computersystem get totalphysicalmemory
    
    wmic computersystem get caption,dnshostname,model,systemtype
    
    wmic nic list brief
    
    wmic diskdrive get model,size
    wmic logicaldisk get name,size
    :wmic partition get name,size,type
    
    wmic ntdomain get 

caption,dnsforestname,domaincontrolleraddress,domaincontrollername,status
goto start

::其他

:01
echo %dev%
devmgmt.msc
goto start

:02
echo %reg%
regedit
goto start

:03
echo %dco%
dcomcnfg
goto start

:04
echo %com%
compmgmt.msc
goto start

:05
echo %mst%
mstsc
goto start

:06
echo %cle%
fsmgmt.msc
goto start

:07
echo %lus%
lusrmgr.msc
goto start

:08
echo %osk%
osk
goto start

:09
echo %win%
winver
goto start

:10
echo %fsm%
fsmgmt.msc
goto start

:11
echo %gpe%
gpedit.msc
goto start

:12
echo %uti%
utilman
goto start

:off
    set y=<nul
    set /p y=確認註銷?(y/n):
    if %y%==y (logoff)
    set y=<nul
goto start

:start
echo -----------====end====-----------
echo.
goto start0
pause>nul

 

目前還在github更新中!

alittlemc/toy: 編寫些腳本將運維經常所用到小玩意所集成在一起 (github.com)