DOS命令行(4)——Windows系统的配置与管理(上)
阅读原文时间:2021年06月24日阅读:1

——运行系统文件检查器(需要以管理员身份运行命令提示符)

命令格式:SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE=] [/VERIFYFILE=] [/OFFWINDIR= /OFFBOOTDIR= [/OFFLOGFILE=]]

参数说明:

  • /SCANNOW 扫描所有保护的系统文件的完整性,并尽可能修复有问题的文件。
  • /VERIFYONLY 扫描所有保护的系统文件的完整性。不会执行修复操作。
  • /SCANFILE 扫描引用的文件的完整性,如果找到问题,则修复文件。指定完整路径
  • /VERIFYFILE 验证带有完整路径 的文件的完整性。不会执行修复操作。
  • /OFFBOOTDIR 对于脱机修复,指定脱机启动目录的位置
  • /OFFWINDIR 对于脱机修复,指定脱机 Windows 目录的位置
  • /OFFLOGFILE 对于脱机修复,通过指定日志文件路径选择性地启用记录

例如扫描所有保护的系统文件的完整性,并尽可能修复,输入 sfc /scannow ,按回车键即可


——注销用户

注销用户


——让系统在指定时间后关机

关闭或重启本地或远程计算机

命令格式:shutdown [-i|-l|-s|-r|-a] [-f] [-m \\computername]] [-t xx] [-c "message"] [-d[u|

p]:xx:yy]

参数说明:

  • -i 显示GUI界面,必须是第一选项

  • -l 注销当前用户,这是默认设置,且不能与 "-m [computername]"参数一起使用

  • -s 关闭本地计算机

  • -r 关闭之后重新启动

  • -a 终止关闭

  • -f 强制运行要关闭的应用程序

  • -m [\\computername] 指定要关闭的计算机

  • -t xx 将用于关闭系统的定时器设置为xx秒,默认值是20秒

  • -c "message" 指定将在“系统关闭”窗口中的“消息”区域显示的消息。最多可使用127个字符,且引号中必须包含消息

  • -d [u|p]:xx:yy

  • u 指定用户代码

  • p 指定已计划的关闭代码

  • xx 指定主要的原因代码

  • yy 指定次要的原因代码

  • -p 关闭本地计算机,没有超时或警告(win7中加入)

例如要让计算机每天12点整定时关机,输入 at 12:00 shutdown -s -f,按回车键即可


——运行计划任务

在特定的日期和时间运行指定命令或程序

注意:at命令在win10版本已弃用,改用schtasks

命令格式1:AT [\\computername] time [/INTERACTIVE] [ /EVERY:date[,…] | /NEXT:date[,…]] "command"

参数说明:

  • 无参数: 显示所有已设置的计划命令情况。
  • \\computername : 指示执行该命令的计算机名,如省略则在本机执行。
  • time : 命令执行时间 , 将时间以 24 小时标记( 00:00 [ 午夜 ] 到 23:59 )的方式表示为小时:分钟
  • /interactive : 当程序执行时是否与正在登录的用户进行交互。
  • /every:date[, ] : 指定程序执行的日期 ,将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su) ,或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date ,将假定为该月的当前日期。
  • next:date[, ] : 指定程序下一次执行的日期。
  • ″command″ : 定时执行的 命令、程序( .exe 或 .com )或批处理程序( .bat 或 .cmd )。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的 UNC 符号,而不是远程驱动器号。 如果命令不是可执行 (.exe) 文件,必须在命令前加上 cmd /c ,例如: cmd /c dir > c:\test.out

命令格式2:AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]

参数说明:

  • id : 分配给计划命令的识别号码,可由不带参数的 AT 命令查到。
  • /delete : 取消指定的计划命令,如果 id 省略的话,取消所有的计划命令。
  • /yes : 强制对所有的取消询问回答 yes 。

(1)列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。

AT

(2)每周的周一到周五6:00运行记事本程序

AT 6:00 /every:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday notepad.exe

(3)周一到周五每天晚上22:41关机

AT 22:41 /every:M,T,W,Th,F shutdown -s


——运行计划任务

命令格式:SCHTASKS /Create [/S system [/U username [/P [password]]]] [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day] [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime][/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]] [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F]

描述: 允许管理员在本地或远程系统上创建计划任务。

参数说明:

  • /S system 指定要连接到的远程系统。如果省略这个系统参数,默认是本地系统。
  • /U username 指定应在其中执行 SchTasks.exe 的用户上下文。
  • /P [password] 指定给定用户上下文的密码。如果省略则提示输入。
  • /RU username 指定任务在其下运行的“运行方式”用户帐户(用户上下文)。对于系统帐户,有效值是 ""、"NT AUTHORITY\SYSTEM" 或"SYSTEM"。对于 v2 任务,"NT AUTHORITY\LOCALSERVICE"和
  • "NT AUTHORITY\NETWORKSERVICE"以及常见的 SID。对这三个也都可用。
  • /RP [password] 指定“运行方式”用户的密码。要提示输入密码,值必须是 "*" 或无。系统帐户会忽略该密码。必须和 /RU 或 /XML 开关一起使用。
  • /RU/XML /SC schedule 指定计划频率。有效计划任务: MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.
  • /MO modifier 改进计划类型以允许更好地控制计划重复
  • 周期。有效值列于下面“修改者”部分中。
  • /D days 指定该周内运行任务的日期。有效值:MON、TUE、WED、THU、FRI、SAT、SUN和对 MONTHLY 计划的 1 - 31(某月中的日期)。通配符“*”指定所有日期。
  • /M months 指定一年内的某月。默认是该月的第一天。有效值: JAN、FEB、MAR、APR、MAY、JUN、JUL、 AUG、SEP、OCT、NOV 和 DEC。通配符“*” 指定所有的月。
  • /I idletime 指定运行一个已计划的 ONIDLE 任务之前要等待的空闲时间。有效值范围: 1 到 999 分钟。
  • /TN taskname 指定唯一识别这个计划任务的名称。
  • /TR taskrun 指定在这个计划时间运行的程序的路径和文件名。例如: C:\windows\system32\calc.exe
  • /ST starttime 指定运行任务的开始时间。时间格式为 HH:mm (24 小时时间),例如 14:30 表示2:30 PM。如果未指定 /ST,则默认值为当前时间。/SC ONCE 必需有此选项。
  • /RI interval 用分钟指定重复间隔。这不适用于计划类型: MINUTE、HOURLY、ONSTART, ONLOGON, ONIDLE, ONEVENT.有效范围: 1 - 599940 分钟。如果已指定 /ET 或 /DU,则其默认值为10 分钟。
  • /ET endtime 指定运行任务的结束时间。时间格式为 HH:mm (24 小时时间),例如,14:50 表示 2:50 PM。这不适用于计划类型: ONSTART、ONLOGON, ONIDLE, ONEVENT.
  • /DU duration 指定运行任务的持续时间。时间格式为 HH:mm。这不适用于 /ET 和计划类型: ONSTART, ONLOGON, ONIDLE, ONEVENT.对于 /V1 任务,如果已指定 /RI,则持续时间默认值为1 小时。
  • /K 在结束时间或持续时间终止任务。这不适用于计划类型: ONSTART、ONLOGON, ONIDLE, ONEVENT.必须指定 /ET 或 /DU。
  • /SD startdate 指定运行任务的第一个日期。格式为 yyyy/mm/dd。默认值为当前日期。这不适用于计划类型: ONCE、ONSTART, ONLOGON, ONIDLE, ONEVENT.
  • /ED enddate 指定此任务运行的最后一天的日期。格式是 yyyy/mm/dd。这不适用于计划类型:ONCE、ONSTART、ONLOGON、ONIDLE。
  • /EC ChannelName 为 OnEvent 触发器指定事件通道。
  • /IT 仅有在 /RU 用户当前已登录且作业正在运行时才可以交互式运行任务。此任务只有在用户已登录的情况下才运行。
  • /NP 不储存任何密码。任务以给定用户的身份非交互的方式运行。只有本地资源可用。
  • /Z 标记在最终运行完任务后删除任务。
  • /XML xmlfile 从文件的指定任务 XML 中创建任务。可以组合使用 /RU 和 /RP 开关,或者在任务 XML 已包含主体时单独使用 /RP。
  • /V1 创建 Vista 以前的平台可以看见的任务。不兼容 /XML。
  • /F 如果指定的任务已经存在,则强制创建任务并抑制警告。
  • /RL level 为作业设置运行级别。有效值为LIMITED 和 HIGHEST。默认值为 LIMITED。
  • /DELAY delaytime 指定触发触发器后延迟任务运行的等待时间。时间格式为mmmm:ss。此选项仅对计划类型ONSTART, ONLOGON, ONEVENT.

示例

1.创建bat脚本

httpd -k restart

2.创建开机启动脚本

schtasks.exe /create /tn "restart" /ru SYSTEM /sc ONSTART /tr "E:\dataojo\commond\restart.bat"

3.删除任务

schtasks /delete /tn restart

4.查询任务

schtasks /query /fo TABLE schtasks /query /fo TABLE /tn restart schtasks /query /fo LIST schtasks /query /fo LIST /tn restart

5.开始运行任务

schtasks /run /tn restart


——显示或修改文件的访问控制列表(ACL)

显示或修改文件的访问控制列表

DAC-自主访问控制:由客体的属主对自己的客体进行管理,由属主自己决定是否将自己的客体访问权或部分访问权授予其他主体,这种控制方式是自主的。也就是说,在自主访问控制下,用户可以按自己的意愿,有选择地与其他用户共享他的文件。

DACL-自由访问控制列表:对对象持有者控制访问对象,并标明特定的用户,特定的组是否能持有对象。简单一句话就是说,定义哪个用户,或哪个用户所属的组访问该对象的权限。

SACL-系统访问控制列表:用来记录某个安全对象被访问的情况,也可以理解为当用户去访问的时候具有对该安全对象的权限!,比如读、写、运行等的存取控制权限细节的列表。

ACL-访问控制列表:DACL和SACL构成了整个存取控制列表(Access Control List)

ACE-访问控制项:ACL中的每一项,我们叫做ACE(Access Control Entry)

Securable Object-安全对象:是拥有SD(安全描述符)的Windows的对象,所有的被命名的Windows的对象都是安全对象,但是一些没有命名的对象是安全对象,如:进程和线程,也有安全描述符SD。

命令格式: CACLS filename [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G user:perm] [/R user […]] [/P user:perm […]] [/D user […]]

  • filename 显示 ACL。
  • /T 更改当前目录及其所有子目录中
  • 指定文件的 ACL。
  • /L 对照目标处理符号链接本身
  • /M 更改装载到目录的卷的 ACL
  • /S 显示 DACL 的 SDDL 字符串。
  • /S:SDDL 使用在 SDDL 字符串中指定的 ACL 替换 ACL。
  • (/E、/G、/R、/P 或 /D 无效)。
  • /E 编辑 ACL 而不替换。
  • /C 在出现拒绝访问错误时继续。
  • /G user:perm 赋予指定用户访问权限。
  • Perm 可以是: R 读取
  • W 写入
  • C 更改(写入)
  • F 完全控制
  • /R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
  • /P user:perm 替换指定用户的访问权限

perm 可以是:

  • N 无

  • R 读取

  • W 写入

  • C 更改(写入)

  • F 完全控制

  • /D user 拒绝指定用户的访问。

缩写:

  • CI - 容器继承。

ACE 会由目录继承。

  • OI - 对象继承。

ACE 会由文件继承。

  • IO - 只继承。

ACE 不适用于当前文件/目录。

  • ID - 已继承。

ACE 从父目录的 ACL 继承。

(1)使用cacls命令查看文件夹的访问控制权限

例如查看当前目录的访问控制权限输入 cacls . ,按回车键即可。

(2)使用cacls命令修改文件夹的访问控制权限

例如想让本地用户(root)对当前路径下的"game"目录及子目录中所有的文件具有完全访权限,输入 cacls game /t /e /c /g root:f ,按回车键即可


——显示或修改自由访问控制表(DACL)

安全标识符(Security Identifiers,SID),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 中的内部进程将引用帐户的 SID 而不是帐户的用户名或组名。

命令格式1:icacls name /save aclfile [/T] [/C] [/L] [/Q]

将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中以便将来与 /restore 一起使用。请注意,未保存 SACL、所有者或完整性标签。

命令格式2:icacls directory [/substitute SidOld SidNew […]] /restore aclfile [/C] [/L] [/Q]

将存储的 DACL 应用于目录中的文件。

命令格式3:icacls name /setowner user [/T] [/C] [/L] [/Q]

更改所有匹配名称的所有者。该选项不会强制更改所有身份;使用 takeown.exe 实用程序可实现该目的。

命令格式4:icacls name /findsid Sid [/T] [/C] [/L] [/Q]

查找包含显式提及 SID 的 ACL 的所有匹配名称。

命令格式5:icacls name /verify [/T] [/C] [/L] [/Q]

查找其 ACL 不规范或长度与 ACE计数不一致的所有文件。

命令格式6:icacls name /reset [/T] [/C] [/L] [/Q]

为所有匹配文件使用默认继承的 ACL 替换 ACL。

命令格式7:icacls name [/grant[:r] Sid:perm[…]] [/deny Sid:perm […]] [/remove[:g|:d]] Sid[…]] [/T] [/C] [/L] [/Q] [/setintegritylevel Level:policy[…]]

/grant[:r] Sid:perm 授予指定的用户访问权限。如果使用 :r,这些权限将替换以前授予的所有显式权限。如果不使用 :r,这些权限将添加到以前授予的所有显式权限。

/deny Sid:perm 显式拒绝指定的用户访问权限。将为列出的权限添加显式拒绝 ACE,并删除所有显式授予的权限中的相同权限。

/remove[:[g|d]] Sid 删除 ACL 中所有出现的 SID。使用:g,将删除授予该 SID 的所有权限。使用

:d,将删除拒绝该 SID 的所有权限。

/setintegritylevel [(CI)(OI)]级别将完整性 ACE 显式添加到所有匹配文件。要指定的级别为以下级别之一:

L[ow]

M[edium]

H[igh]

完整性 ACE 的继承选项可以优先于级别,但只应用于目录。

/inheritance:e|d|r

e - 启用继承

d - 禁用继承并复制 ACE

r - 删除所有继承的 ACE

注意:Sid 可以采用数字格式或友好的名称格式。如果给定数字格式,那么请在 SID 的开头添加一个 *。

参数说明:

  • /T 指示在以该名称指定的目录下的所有匹配文件/目录上执行此操作。

  • /C 指示此操作将在所有文件错误上继续进行。仍将显示错误消息。

  • /L 指示此操作在符号链接本身而不是其目标上执行。

  • /Q 指示 icacls 应该禁止显示成功消息。

  • ICACLS 保留 ACE 项的规范顺序:

    • 显式拒绝
    • 显式授予
    • 继承的拒绝
    • 继承的授予
  • perm 是权限掩码,可以指定两种格式之一:

    • 简单权限序列:

      • N - 无访问权限
      • F - 完全访问权限
      • M - 修改权限
      • RX - 读取和执行权限
      • R - 只读权限
      • W - 只写权限
      • D - 删除权限
    • 在括号中以逗号分隔的特定权限列表:

      • DE - 删除
      • RC - 读取控制
      • WDAC - 写入 DAC
      • WO - 写入所有者
      • S - 同步
      • AS - 访问系统安全性
      • MA - 允许的最大值
      • GR - 一般性读取
      • GW - 一般性写入
      • GE - 一般性执行
      • GA - 全为一般性
      • RD - 读取数据/列出目录
      • WD - 写入数据/添加文件
      • AD - 附加数据/添加子目录
      • REA - 读取扩展属性
      • WEA - 写入扩展属性
      • X - 执行/遍历
      • DC - 删除子项
      • RA - 读取属性
      • WA - 写入属性
  • 继承权限可以优先于每种格式,但只应用于目录:

    • (OI) - 对象继承
    • (CI) - 容器继承
    • (IO) - 仅继承
    • (NP) - 不传播继承
    • (I) - 从父容器继承的权限

例1、将 c:\windows 及其子目录下所有文件的 ACL 保存到 AclFile。

icacls C:\Windows\* /save AclFile /T【、】

例2、还原 c:\windows 及其子目录下存在的 AclFile 内所有文件的 ACL

icacls C:\Windows\ /restore AclFile

例3、授予用户对"C:\Users\"目录下的文件删除和写入DAC的管理员权限(需要管理员权限)

icacls c:\users\ /grant Administrator:(D,WDAC)

例4、授予由 sid S-1-1-0 定义的用户对"C:\Users\"目录下的文件删除和写入 DAC 的权限

icacls c:\users\ /grant *S-1-1-0:(D,WDAC)

例5、将所有d:\documents目录下的文件、子文件夹的NTFS权限修改为仅管理员组(administrators)完全控制(删除原有所有NTFS权限设置)

cacls d:\documents\*.* /T /G administrators:F


——获取文件或文件夹所有权

命令格式:takeown [/S system [/U username [/P [password]]]] /F filename [/A] [/R [/D prompt]]

参数说明:

  • /S system 指定要连接到的远程系统。
  • /U [domain\]user 指定用户上下文,命令在此上下文中执行。
  • /P [password] 指定给定用户上下文的密码。如果省略,提示输入。
  • /F filename 指定文件名或目录名模式。可以用通配符 "*"指定模式。允许共享名\文件名。
  • /A 将所有权给于管理员组,而不是当前用户。
  • /R 递归: 指示工具运行于指定的目录和子目录里的文件上。
  • /D prompt 当前用户在一个目录里没有“列出文件夹”权限时,使用默认答案。当在子目录里进行递归 (/R) 操作时会发生这种情况。用有效值 "Y" 获取所有权或用 "N" 跳过。
  • /SKIPSL 不遵循符号链接。仅适用于 /R。

例1、强制将当前目录下的所有文件及文件夹、子文件夹下的所有者更改为管理员组(administrators)

takeown /f * /a /r /d y


——性能计数器

logman命令的作用是管理性能日志和报警服务,以创建管理事件跟踪会话日志和性能日志

命令用法:logman [create|query|start|stop|delete|update|import|export] [选项]

参数说明:

  • 动词:

  • create 创建新的数据收集器。

  • query 查询数据收集程序属性。如果没有指定名称,将列出所有数据收集程序。

  • start 启动现有数据收集器并将开始时间设为手动。

  • stop 停止现有数据收集程序并将停止时间设为手动。

  • delete 删除现有数据收集程序。

  • update 更新现有数据收集程序的属性。

  • import 从 XML 文件导入数据收集器集。

  • export 将数据收集器集导出到 XML 文件。

  • 副词:

  • counter 创建计数器数据收集程序。

  • trace 创建跟踪数据收集程序。

  • alert 创建警报数据收集器。

  • cfg 创建配置数据收集器。

  • providers 显示注册的提供程序。

  • 选项(counter):

  • -c 要收集的性能计数器。

  • -cf <文件名> 列出要收集的性能计数器的文件,一行一个。

  • -f 指定数据收集程序的记录格式。对于 SQL 数据库格式,必须在命令行中使用 -o 选项和 DNS!log 选项。默认设置是二进制。

  • -sc <值> 要使用性能计数器数据收集器收集的示例的最大数量。

  • -si <[[hh:]mm:]ss> 性能计数器数据收集程序的示例间隔。

  • 选项(trace):

  • -f 指定数据收集程序的记录格式。对于 SQL 数据库格式,必须在命令行中使用 -o 选项和 DNS!log 选项。默认设置是二进制。

  • -mode 事件跟踪会话记录程序模式。有关详细信息,请访问https://go.microsoft.com/fwlink/?LinkID=136464

  • -ct 指定当记录每个事件的时间戳时要使用的时钟分辨率。可以查询性能记数器、系统时间或 CPU 周期。

  • -ln 事件跟踪会话的记录者名。

  • -ft <[[hh:]mm:]ss> 事件跟踪会话刷新计时器。

  • -[-]p 要启用的单个事件跟踪提供程序。术语“标记”和“关键字”在此上下文中是同义词。

  • -pf <文件名> 列出要启用的多个事件跟踪提供程序的文件。

  • -[-]rt 以实时模式运行事件跟踪会话。

  • -[-]ul 以用户模式运行事件跟踪会话。

  • -bs <值> 事件跟踪会话缓冲区大小,单位为 KB。

  • -nb 事件跟踪会话缓冲区数量。

  • 选项(alert):

  • -[-]el 启用/禁用事件日志报告。

  • -th 指定计数器及其阈值和警报。

  • -[-]rdcs 警报激发时启动数据收集器集。

  • -[-]tn 警报激发时要运行的任务。

  • -[-]targ 任务参数。

  • -si <[[hh:]mm:]ss> 性能计数器数据收集程序的示例间隔。

  • 选项(cfg):

  • -[-]el 启用/禁用事件

  • -[-]ni 启用/禁用网络接口查询。

  • -reg 要收集的注册表值。

  • -mgt 要收集的 WMI 对象。

  • -ftc 要收集的文件的完整路径。

  • 选项:

  • -? 显示跟上下文相关的帮助。

  • -s 在指定的远程系统上执行命令。

  • -config <文件名> 含有命令选项的设置文件。

  • [-n] 目标对象的名称。

  • -pid 进程标识符。

  • -xml <文件名> 要导入或导出的 XML 文件的名称。

  • -as 异步执行请求的操作。

  • -[-]u Run As 的用户。输入 * 生成密码提示。如果在密码提示处键入,密码则不会得到显示。

  • -m <[start] [stop]> 改为手动启动或停止,而不使用计划的开始或结束时间。

  • -rf <[[hh:]mm:]ss> 以一定的时间运行数据收集程序。

  • -b 在指定时间开始数据收集程序。

  • -e 在指定时间结束数据收集程序。

  • -o 输出日志文件的路径或 SQL 数据库中的 DSN 和日志集名称。默认路径为 "%systemdrive%\PerfLogs\Admin"。

  • -[-]r 每天在指定的开始时间和结束时间重复数据收集程序操作。

  • -[-]a 附到现有日志文件。

  • -[-]ow 覆盖现有的日志文件。

  • -[-]v 将文件版本信息附到日志名结尾。

  • -[-]rc 每次关闭日志时运行指定的命令。

  • -[-]max <值> 日志文件最大值(MB)或 SQL 日志的记录数量。

  • -[-]cnf <[[hh:]mm:]ss> 指定时间已过或超过最大大小值时,创建新文件。

  • -y 不用提示对所有问题都回答 yes。

  • -fd 将现有事件跟踪会话的所有活动缓冲区刷新到磁盘。

  • -ets 不保存或计划就将命令直接发送到事件跟踪会话。

1.使用logman命令创建新会话日志(需要以管理员身份运行命令提示符)

例如创建一个新的"idlog"会话日志,并使用"\Processor(_Total)\% Idle Time"计数器,限制收集性能数据的间隔时间是"10秒",将"idlog"会话日志保存在"当前路径的"c:\log"目录下,输入 logman create counter idlog -c "\Processor(_Total)\% Idle Time" -si 10:00 -o c:\log ,按回车键即可,并在屏幕上显示“命令成功结束”

(1)查看所有会话日志状态 logman query 或 logman

(2)查看指定日志的详细信息 logman query idlog

(3)启动指定的会话日志 logman start idlog

(4)停止启动的会话日志 logman stop idlog

(5)删除不需要的会话日志 logman delete idlog