当前位置: 首页 > news >正文

第12章《学以致用》—PowerShell 自学闭环与实战笔记

第12章《学以致用》—PowerShell 自学闭环与实战笔记(高分版)

这篇笔记不再灌输“新概念”,而是把你已掌握的指令、搜索、模块与帮助系统,串成一套能直接落地的自学闭环,并用两个可复现的实战任务把它“拧紧”:
① 修改本地账户 Privileges(用户特权);② 创建可用的 SMB 共享


目录

  • 一、目标与环境

  • 二、PowerShell 自学五步闭环

  • 三、实战 A:修改本地用户特权(Privileges)

    • 1)在本地探索:Help / Get-Command
    • 2)转向 Gallery:Find-Module / Install-Module
    • 3)摸清模块:Get-Command -Module / Get-Help
    • 4)枚举与变更特权:Get-Privilege / Add-Privilege
    • 5)验证与回滚
  • 四、实战 B:创建并验证 SMB 文件共享

  • 五、常见坑与避坑建议

  • 六、临门一脚:你的个人练习清单

  • 七、复盘卡片(收藏备用)


一、目标与环境

  • 目标:学会自行定位命令 → 获取模块 → 读懂帮助 → 组合命令 → 验证回滚的完整路径。
  • 演示环境:Windows 10/11 或 Windows Server 2012 R2+,PowerShell 5.0+(建议以管理员身份运行)。
  • 权限说明:本章涉及修改本地安全策略、创建共享等系统操作,请在实验机或虚拟机中练习。

二、PowerShell 自学五步闭环

  1. 问问题(明确任务 & 关键词)

    • 例:我想“修改本地用户可执行的系统级任务” → 关键词 privilege/privileges
  2. 本地查(Help / Get-Command)

    • help *keyword*Get-Command -Noun/-Verb/-Module,看看“有没有现成的”。
  3. 上仓库(PowerShell Gallery)

    • Find-Module 搜索、Install-Module 安装,小心不受信任源;先看作者与帮助。
  4. 读帮助(Get-Help -Full/-Examples)

    • 重点看:语法参数、输入输出类型、示例。能否管道?是否支持 -WhatIf/-Confirm?
  5. 小步试(枚举 → 变更 → 验证 → 回滚)

    • GetSet;先 -WhatIf 再执行;能加就能减,准备撤销命令。

记住这句:“先枚举(Get),后更改(Set/Add/Remove/Enable/Disable),再验证(Get/测试),最后留回滚(Remove/Disable)。”


三、实战 A:修改本地用户特权(Privileges)

任务:为本机管理员组添加/查看某项用户特权(例如 SeDenyBatchLogonRight)。这并非 NTFS 权限,而是 “能否执行某类系统范围操作” 的特权控制。

1)在本地探索:Help / Get-Command

help *privilege*
Get-Command -Noun *priv*    # 如果没有命中,说明本机暂无相关 cmdlet

若本机无直接支持命令 → 转到 Gallery。

2)转向 Gallery:Find-Module / Install-Module

Find-Module *privilege* | Format-Table -Auto
Install-Module PoshPrivilege

安装来自不受信任源会提示确认;生产环境建议先审阅代码 / 指定可信源。

3)摸清模块:Get-Command -Module / Get-Help

Get-Command -Module PoshPrivilege | Format-Table -AutoGet-Help Add-Privilege -Full
Get-Help Get-Privilege -Examples
Get-Help Remove-Privilege -Examples
Get-Help Enable-Privilege -Examples
Get-Help Disable-Privilege -Examples

4)枚举与变更特权:Get-Privilege / Add-Privilege

列出全部特权与账户映射

Get-Privilege | Out-Host   # 可能很多,先看看结构

只看某个特权的当前绑定

Get-Privilege -Privilege SeDenyBatchLogonRight

为“内置管理员组”添加一条特权(示例)

# 添加前先 -WhatIf 看看会做什么
Add-Privilege -AccountName 'BUILTIN\Administrators' `-Privilege SeDenyBatchLogonRight `-WhatIf# 确认无误后执行
Add-Privilege -AccountName 'BUILTIN\Administrators' `-Privilege SeDenyBatchLogonRight

5)验证与回滚

# 验证
Get-Privilege -Privilege SeDenyBatchLogonRight# 回滚(演示两种)
Remove-Privilege -AccountName 'BUILTIN\Administrators' -Privilege SeDenyBatchLogonRight
# 或禁用/启用某特权的生效(视模块实现而定)
Disable-Privilege -Privilege SeDenyBatchLogonRight
Enable-Privilege  -Privilege SeDenyBatchLogonRight

小结:路径清晰、可验证、可回滚,这就是“学以致用”的核心范式。


四、实战 B:创建并验证 SMB 文件共享

任务:创建 C:\Labs 目录,建立 SMB 共享 Labs,权限为 Everyone:读/写Administrators:完全控制,并开启“文档缓存模式”,最后列出共享权限。

脚本(可一键执行)

# 1) 创建目录(存在则跳过)
$path = 'C:\Labs'
if (-not (Test-Path $path)) {New-Item -Path $path -ItemType Directory | Out-Null
}# 2) 创建 SMB 共享(已存在则跳过)
$shareName = 'Labs'
if (-not (Get-SmbShare -Name $shareName -ErrorAction SilentlyContinue)) {$share = New-SmbShare -Name $shareName `-Path $path `-Description 'MoL Lab Share' `-ChangeAccess 'Everyone' `-FullAccess 'Administrators' `-CachingMode Documents
}# 3) 展示共享权限
Get-SmbShareAccess -Name $shareName | Format-Table -Auto

验证点

  • Get-SmbShare 能看到 Labs
  • Get-SmbShareAccess -Name Labs 权限符合预期;
  • 资源管理器 \\localhost\Labs 可访问;
  • 需要跨机测试时注意 防火墙 / 网络发现 / SMB 版本

清理(可选):

# 删除共享与目录(慎用)
Remove-SmbShare -Name Labs -Force
Remove-Item C:\Labs -Recurse -Force

五、常见坑与避坑建议

  • 把 Privileges 当成 NTFS 权限:两者不是一回事;前者是“能否执行某类系统任务”的“特权”,后者是“对文件/目录的访问权限”。
  • 忽视 -WhatIf / -Confirm:危险操作先演练,再执行。
  • 无管理员权限:涉及安全策略、共享等操作,请以管理员运行
  • 在生产机上试错:请使用 虚拟机/快照;把“回滚命令”与“变更命令”成对保存。
  • Gallery 盲装模块:先 Find-Module→看作者/下载量→Get-Help→再装;必要时审阅源码
  • 不读帮助示例Get-Help <Cmdlet> -Examples 常常就是直接可用的答案。

六、临门一脚:你的个人练习清单

  1. 用本文闭环,自主搜索“计划任务”模块,创建一个每小时运行的测试任务;
  2. 枚举 SeBackupPrivilege 拥有者,写脚本导出到 CSV;
  3. 把 SMB 共享脚本封装为函数:支持 自定义共享名/路径/权限,带 -WhatIf
  4. 为脚本补上 Try/Catch日志输出Start-Transcript 或自写日志函数)。

七、复盘卡片(收藏备用)

  • 关键词 → 本地查 → 上仓库 → 读帮助 → 小步试 → 验证回滚
  • 先 Get 后 Set,先 -WhatIf 后执行;
  • 能加就能减:准备 Remove/Disable 作为回退;
  • 管理员权限 + 虚拟机快照 = 安全感;
  • 帮助示例 是效率密码:Get-Help Name -Examples

结语

“学以致用”的关键,不是你记住了多少命令,而是你遇事不慌、定位路径、快速验证的能力。把这套闭环练熟,你就能在 PowerShell 的世界里“自我造血”,越走越稳。祝你玩得开心、改得放心、回得干净。

http://www.dtcms.com/a/336317.html

相关文章:

  • “让机器人更智慧 让具身体更智能”北京世界机器人大会行业洞察
  • Python 调试工具的高级用法
  • OJ目录饿
  • Python 基础语法(二)
  • Kubernetes存储迁移实战:从NFS到阿里云NAS完整指南
  • 【踩坑笔记】50系显卡适配的 PyTorch 安装
  • XF 306-2025 阻燃耐火电线电缆检测
  • JavaScript 性能优化实战:从评估到落地的全链路指南
  • Docker Compose 安装 Neo4j 的详细步骤
  • 福彩双色球第2025094期号码分析
  • Jenkins - CICD 注入环境变量避免明文密码暴露
  • 用MTEB对Embedding模型进行benchmark
  • Pell数列
  • 基本的设计原则
  • SONiC (4) - redis的介绍以及应用
  • 远程协作绘图:借助 cpolar 内网穿透服务访问 Excalidraw
  • 用PaddleDetection套件训练自己的数据集,PP-YOLO-SOD训练全流程
  • 领域快速入门过程记录之--电力网络
  • ROS常用命令手册
  • # C++ 中的 `string_view` 和 `span`:现代安全视图指南
  • GaussDB常用术语缩写及释义
  • 【Linux】IO多路复用
  • nodejs 错误处理
  • Shell脚本-条件判断相关参数
  • 任务型Agent架构简介
  • JUC并发编程04 - 同步/syn-ed(01)
  • prototype 和 _ _ proto _ _的关联
  • 计算机网络 OSI 七层模型和 TCP 五层模型
  • 【Linux系列】如何在 Linux 服务器上快速获取公网
  • 遥感数据介绍——MODIS、VIIRS、Sentinel-2