整理一些Windows桌面运维常用的命令,并且整合成脚本

名字叫toy吧,没有啥技术含量,帮不了大忙,但是可以作为在一旁递工具的小弟,还是可减少自己一定的工作量的,毕竟有一些太长的命令也不是很好记忆的,Windows按tab又不出提示!

  • 上一次更新 2022年10月6日16:54:35,持续更新!
  • 欢迎各位大佬指点,本代码完全开源,随意取用

前言

做过桌面运维的大佬们应该可以很明显感受到这份工作所需要的技能不高,但是内容很杂,很烦索,有时候内容重复性很多,同时也很浪费运维人员的宝贵青春,时间久了对这份工作就产生了厌恶的情绪,人觉得不爽。今天心血来潮写一份脚本(今天10月4日我以为要加班,就来办公室了,结果空无一人,干脆闲来无事写一下)。随便分享一下桌面运维需要学会的一些命令。

使用场景

桌面运维大部分是和系统打交道。

模拟一下背景,现在有一些企业是配备Windows电脑使用AD域来集中的管理电脑用户。也就是每一次当有新电脑需要使用时候,除了设置账号密码、分区、安装操作系统等等步骤,还需要给新配置AD域、安装标准化的软件等等操作。

具体的步骤有:

  1. 在AD域中添加用户,设置好账号权限
  2. 登录到(限制电脑登录设备、登录时间)
  3. 去电脑现场配置好电脑
  4. 安装系统、分区
  5. 设置主机名、设置域、安装指定的软件、修改本地administrator密码

大致可以分为这两步,其中最麻烦的一步就是在电脑现场配置,电脑批量安装软件要登录到域账号中安装软件,因为域账号没有安装软件的权限,所以需要切换的本地的.\administrator账号的身份去安装。对着安装程序按Shift选择其他账户登录,才可安装,每一次安装新的程序还要重新登录,浪费了大量时间。

整理一些Windows桌面运维常用的命令,并且整合成脚本

图1.以其他用户身份运行

再加上桌面运维和系统打交道,有一些故障其实其实都是类似的,比如需要重新启动网卡才可以解决、需要重置输入法、需要重置网络设置等等解决方法。

又或者是命令太多,功能太多,比如注册表经常用,regedit的启动命令就还记得,但是组策略、系统组件用得比较少的一点陌生记不住。如果可以写个脚本,把这些问题的解决方法都集成到一起,遇到问题一步到位那么解决问题就很方便了。

于是我想写一个项目toy,把我在运维上遇到问题整理来解决:

  • 批量的解决问题命令
  • 打开程序的方式汇总

; WindowsToy v1.0

大概介绍

整理一些Windows桌面运维常用的命令,并且整合成脚本

图2.WindowsToy目前拥有的功能

其实初衷很简单,就是可以辅助运维人员快速解决问题或者当个递工具的小弟也可以。

这个脚本是使用bat编写的,之前使用if else语句来生成全部,发现经常有bug,干脆就使用编程的流氓goto来实现,目前使用goto来实现,效果类似于switch case的效果。 话说bat真的无语啊,经常有错的地方,比如for内的需要括号转义,bat相比于python、lua之类的脚本语言不适合作为开发,但是奈何目前桌面运维遇到的大部分都是接触到Windows的多,插个U盘直接双击直接可以使用bat,不需要配置安装python、lua的解释环境,所以嘛,也只好大概讲究一下。

更新

  • v1.0->2022年10月4日15:33:18
  • 基础的完成大致框架的功能
    • 重置网络
    • 修复输入法
    • 清空回收站
    • 批量安装可执行文件
    • 修改计算机名
    • 修改AD域
    • administrator算法运行
  • *后面打算更新终端颜色的美化、拓展更多的功能
  • v1.1->2022年10月6日16:23:03
  • 移除
    • 清理回收站的功能,怕出现意外(感谢大佬uid0913的提醒)
  • 新增
    • 同步时间的功能
  • *现在可以在批处理的终端上也输入cmd命令

整理一些Windows桌面运维常用的命令,并且整合成脚本

图3.WindowsToy v1.1可以在终端里面也输入cmd命令啦

功能

在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:域地址

源代码

可以二次修改:这里大量使用了goto语句,如果需要更新功能id,直接在一组goto start后面添加,描述修改一下即可

:12
echo %uti%
utilman
goto start

:

goto start

:0a
    set y=<nul
    set /p y=确认注销?(y/n):
    if %y%==y (logoff)
    set y=<nul
goto start
@echo off
echo %~0 by alittlemc;
echo version 1.1;updatetime 2022-10-06echo hostname %COMPUTERNAME%;user %USERNAME%
:0
@REM if %info%==y (
echo ----------====start====----------
echo    ID    NOTES
echo     0      显示提示
echo     00     退出
echo     1      切换到administrator执行
echo      1a    切换到指定用户执行
echo     2      重置网络设置
echo     3      修复输入法
echo     4      联网同步系统时间
::echo      4a    手动修改系统时间
echo     5      批量安装%~dp0目录下全部*.msu,*.msi,*.exe可执行文件
echo     6      重命计算机名字
echo     7      新电脑设置域
::echo      7a    老电脑修改域
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     0a     %off%
echo     0b     %info%
::echo systemreset 重置Windows
::echo systemreset-cleanpc 更新并重置Windows
goto start

:start0
::echo 可以输入cmd命令也可以输入功能ID
set /p sr=%~dp0#
@REM 数字开头就是功能id,否则是cmd命令
echo %sr:~,1%|findstr /i "[a-z]" >nul 2>nul && goto docmd || goto dobat
pause>nul

:dobat
echo dobat
goto %sr% 2>nul||echo 未匹配到的ID&%~0%&pause>nul
pause>nul

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

:1a
    set /p user=输入用户名:
    echo change %user%
    net user  %user% /active:yes
    echo %user%
goto start

:00
    exit
goto start

:2
    echo 重置网络设置(netsh winsock reset)
    set y=<nul
    set /p y=确认重置网络?(y/n)
    if %y%==y (netsh winsock reset)
    set y=<nul
goto start

:3
    echo 修复输入法(ctfmon)
    ctfmon
goto start

:4
   echo 联网同步时间
   net time \\time.windows.com /set /y
goto start

:4a
   set y=<nul
   echo 当前时间%date% %time%
   set /p y=输入系统时间(如:2022-10-06)输入n取消
   if %y%==n (goto start) else (date %y%)
   echo %date% %time%
   set y=<nul
goto start

:5
    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

:6
    :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

:7
    :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

:0b
    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

:0a
    set y=<nul
    set /p y=确认注销?(y/n):
    if %y%==y (logoff)
    set y=<nul
goto start

:start
echo -----------====end====-----------
goto start0

:docmd
echo CMD 命令
%sr%
@REM TIMEOUT /T 10
goto start

pause>nul

目前还在github更新中!

alittlemc/toy: 编写些脚本将运维经常所用到小玩意所集成在一起 (github.com)

Original: https://www.cnblogs.com/alittlemc/p/16753896.html
Author: alittlemc
Title: 整理一些Windows桌面运维常用的命令,并且整合成脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578131/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • debugfs使用指南

    debugfs 概述 类似sysfs、procfs,debugfs 也是一种内存文件系统。不过不同于sysfs一个kobject对应一个文件,procfs和进程相关的特性,debu…

    Linux 2023年6月7日
    095
  • cobbler的部署

    cobbler部署 //配置yum源 [root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://m…

    Linux 2023年6月13日
    091
  • 网络安全简单入门与扫描

    网络安全简单入门 内容大纲 策略制定 安全工具 其他 1、安全策略 1.1、安全三要素 要全面地认识一个安全问题,我们有很多种办法,但首先要理解安全问题的组成属性。前人通过无数实践…

    Linux 2023年6月7日
    095
  • 跳石板—牛客网

    #include #include #include using namespace std; //计算第i个&#x7684…

    Linux 2023年6月13日
    0123
  • CH343芯片应用—Windows驱动安装与使用

    CH343属于沁恒第三代USB转串口芯片系列的单串口型号,基于经典版CH340芯片完成技术革新,实现USB转高速异步串口,支持最高6Mbps串口波特率。芯片支持使用厂商提供的VCP…

    Linux 2023年6月7日
    0108
  • Java List和Map遍历的方法,forEach()的使用

    注意: 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。 Java 8之前 …

    Linux 2023年6月7日
    0107
  • CSAPP 之 CacheLab 详解

    前言 本篇博客将会介绍 CSAPP 之 CacheLab 的解题过程,分为 Part A 和 Part B 两个部分,其中 Part A 要求使用代码模拟一个高速缓存存储器,Par…

    Linux 2023年6月7日
    0138
  • linux 系统迁移到lvm分区

    对于普通分区磁盘空间不够,而采用lvm分区,原来系统进行迁移或者备份还原。 dd命令用于将整个硬盘进行备份,包括uuid,适用于对对整个物理盘的备份 tar 备份可以对整个系统进行…

    Linux 2023年6月14日
    095
  • tomcat上部署jenkins

    tomcat上部署jenkins tomcat上部署jenkins 部署tomcat 部署jenkins Jenkins创建流水线任务 主机名称 IP地址 需要的应用服务 工具包 …

    Linux 2023年6月6日
    0115
  • 让SpringBoot也用上Fluent Validator

    前言 在使用SpringBoot的时候经常需要对客户端传入的参数进行合法性的校验,校验的方法基本上都是使用SpringBoot提供的注解,有时候遇上注解不能满足需求的时候还需要在业…

    Linux 2023年6月14日
    093
  • zabbix用法

    zabbix用法 zabbix web管理界面功能介绍 默认页面是个仪表盘,右上角的编辑可以自定义布局 Monitoring(监控) Dashboard(仪表盘) 和主页面一样,可…

    Linux 2023年6月13日
    081
  • C盘空间怎么不够了?原来杀毒软件隔离区太大了

    打开小红伞的隔离区,文件全选,删除,居然一下多出20个G. C盘空间怎么不够了?原来杀毒软件隔离区太大了 麻了。打开小红伞的隔离区,文件全选,删除,一下多出20个G. 还有一个比较…

    Linux 2023年6月6日
    0118
  • 【证券从业】金融基础知识-第四章 股票02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-06-06 02:11 陈景中 阅读…

    Linux 2023年6月13日
    0111
  • phpredis中文手册——《redis中文手册》 php版

    将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。 这个命令类似于以下两个命令: O(1) SETRANGE SETRANGE key offset…

    Linux 2023年5月28日
    081
  • Linux目录操作cp、mv与rmLinux查找文件(find、which)

    cp(复制) cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为 *cp [选项]… 源文件… 文件夹 多个源文件只…

    Linux 2023年6月6日
    088
  • MultipartFile上传文件异步处理时的java.io.FileNotFoundException

    参考:https://javajgs.com/archives/26157 1-1 需求 前端上传Word文档,后端将接收到的Word文档①上传到文件服务器②将Word转为Pdf。…

    Linux 2023年6月8日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球