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

第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.xdnf.cn/news/18232.html

相关文章:

  • 第七十七章:多模态推理与生成——开启AI“从无到有”的时代!
  • 计算机程序编程软件开发设计之node..js语言开发的基于Vue框架的选课管理系统的设计与实现、基于express框架的在线选课系统的设计与实现
  • Jenkins - CICD 注入环境变量避免明文密码暴露
  • Python中f - 字符串(f-string)
  • Hadoop入门
  • 前端基础知识版本控制系列 - 05( Git 中 HEAD、工作树和索引之间的区别)
  • 图论水题4
  • 写作路上的迷茫与突破
  • java_spring boot 中使用 log4j2 及 自定义layout设置示例
  • NestJS 手动集成TypeORM
  • 关于第一次接触Linux TCP/IP网络相关项目
  • Docker入门:容器化技术的第一堂课
  • python---装饰器
  • 在线编程题目之小试牛刀
  • [每周一更]-(第155期):Go 1.25 发布:新特性、技术思考与 Go vs Rust 竞争格局分析
  • 回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(一)
  • 机器学习算法篇(十三)------词向量转化的算法思想详解与基于词向量转换的文本数据处理的好评差评分类实战(NPL基础实战)
  • 微服务之间的调用需要走网关么?
  • Linux Shell定时检查日期执行Python脚本
  • Python数据类型转换详解:从基础到实践
  • uniappx 安卓端本地打包的一些总结
  • 【typenum】 16 非零标记及改进建议
  • 【Linux系统】动静态库的制作
  • java之 junit4单元测试Mockito的使用
  • Pycharm Debug详解
  • 深度学习之优化器
  • 数据与模型融合波士顿房价回归建模预测
  • 数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
  • LeetCode 1323: 6和9组成的最大数字
  • 内网后渗透攻击--隐藏通信隧道技术(应用层隧道技术)