整理一些Windows桌面运维常用的命令,并且整合成脚本
github地址:alittlemc/toy: 编写些脚本将运维经常所用到小玩意所集成在一起 (github.com)
持续更新!
前言
做过桌面运维的大佬们应该可以很明显感受到这份工作所需要的技能不高,但是内容很杂,很烦索,有时候内容重复性很多,同时也很浪费运维人员的宝贵青春,时间久了对这份工作就产生了厌恶的情绪,人觉得不爽。今天心血来潮写一份脚本(今天10月4日我以为要加班,就来办公室了,结果空无一人,干脆闲来无事写一下)。随便分享一下桌面运维需要学会的一些命令。
使用场景
桌面运维大部分是和系统打交道。
模拟一下背景,现在有一些企业是配备Windows电脑使用AD域来集中的管理电脑用户。也就是每一次当有新电脑需要使用时候,除了设置账号密码、分区、安装操作系统等等步骤,还需要给新配置AD域、安装标准化的软件等等操作。
具体的步骤有:
- 在AD域中添加用户,设置好账号权限
- 登录到(限制电脑登录设备、登录时间)
 
- 去电脑现场配置好电脑
- 安装系统、分区
- 设置主机名、设置域、安装指定的软件、修改本地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-04 午
echo 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)
整理一些Windows桌面运维常用的命令,并且整合成脚本的更多相关文章
- Hadoop集群-HDFS集群中大数据运维常用的命令总结
		Hadoop集群-HDFS集群中大数据运维常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简单涉及到滚动编辑,融合镜像文件,目录的空间配额等运维操作简介.话 ... 
- Linux运维常用的命令详解
		1. 查看系统内核版本 [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 显示了系 ... 
- 运维常用 MySQL 命令
		目录 设置用户密码 方法一 方法二 丢失root密码找回 添加用户 设置用户密码 方法一 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass ... 
- linux学习13 Linux运维常用文件管理命令及系统变量基础
		一.文件管理命令 1.cp命令,copy a.单源复制,cp [OPTION]... [-T] SOURCE DEST 如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中. 如果D ... 
- Linux运维-常用操作-培训用例
		一.服务器环境 Centos 7.9 二.常用连接工具(免费) 1.Finalshell 2.MobaXterm 3.Putty + WinSCP 三.Linux 系统目录结构 /bin :是 Bi ... 
- 提高Linux运维效率的命令行常用快捷键
		提高Linux运维效率的命令行常用快捷键 tab 命令或路径等的补全键,Linux最有用快捷键 Ctrl+a 光标回到命令行首 Ctrl+e 光标回到命令行尾 Ctrl+k 剪切(删除)光标处到行尾的 ... 
- Linux运维常用150个命令
		Linux运维常用150个命令 转载自:www.cnblogs.com/bananaaa/p/7774467.html 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更 ... 
- Linux运维常用的几个命令介绍【转】
		Linux运维常用的几个命令介绍 1. 查看系统内核版本 [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kerne ... 
- centos 7 查看系统/硬件信息及运维常用命令+联想Y430P无线网卡驱动安装
		centos 7 查看系统/硬件信息及运维常用命令 当前环境:联想Y430P CentOS 7.3 [root@yan-001 ~] # uname -a # 查看内核/操作系统/CPU信息的Li ... 
随机推荐
- Spring 常见面试题总结 | JavaGuide
			首发于 JavaGuide 在线网站:Spring 常见面试题总结 最近在对 JavaGuide 的内容进行重构完善,同步一下最新更新,希望能够帮助你. Spring 基础 什么是 Spring 框架 ... 
- JavaScript 权威指南-学习笔记(一)
			本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ... 
- 一般处理程序ashx接入微信服务器配置
			首先在威信后台填写服务器相关配置,这里按照说明直接填写就好了.配置提交前在需要在我们服务端先准备号接受微信请求的url,对请求内容做验证. 1.准备接口配置信息 A.服务器URL 该URL用于开发者接 ... 
- ACM模式细节
			牛客网的ACM模式需要自己写输入输出,在这里简单记录一下: 基本答题框架: import java.util.*; public class Main{ public static void main ... 
- 解决使用(Jenkins检出代码)git clone检出代码提示必须安装 .NET framework,Version =v4.7.2
			一.事件背景 真的是非常想使用pipeline流水线进行自动化部署打包测试. 于是,晚上下班回家后,真的是"现学现卖",开始做流水线脚本. 经过不懈努力,熬到凌晨两点多,终于把整个 ... 
- 使用docker简单编译k20pro内核
			简介 本文将介绍一下如何使用docker编译红米k20pro的内核.作者当时尝试构建内核的原因是为了将3年前(好像是吧)购买的k20pro至尊版(已退役,12GB内存,512GB硬盘)制作成一个小的服 ... 
- Python实现XMind测试用例快速转Excel用例
			转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c2d10f21.html 你好,我是测试蔡坨坨. 今天分享一个Python编写的小工具,实现XMind测试用例转Excel用 ... 
- [Qt基础内容-08] Qt中MVC的M(Model)
			Qt中MVC的M(Model)简单介绍 Qt有自己的MVC框架,分别是model(模型).view(视图).delegate(委托),这篇文章,简单的介绍以下Qt中有关model(模型)的类以及一些基 ... 
- 华南理工大学 Python第5章课后小测-2
			1.(单选)下面语句的输出结果是: ls = [] def func(a, b): ls.append(b) return a*b s = func("hi", 2) print( ... 
- .NET 7 SDK 开始 支持构建容器化应用程序
			微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要.显式 Docker 构建阶段. 这一决定背后的基本认知是简 ... 
 
			
		