Windows Powershell
本文最后更新于 2025年1月27日 下午
PowerShell 笔记
什么是 PowerShell
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能.
Windows PowerShell 需要用于管理 .NET 对象的语言.该语言需要为使用 cmdlet 提供一致的环境.该语言需要支持复杂的任务,而不会使简单的任务变得更复杂. 该语言需要与在 .NET 编程中使用的高级语言(如C#)一致.
学习资源
常见报错
无法加载文件
******.ps1
,因为在此系统中禁止执行脚本.有关详细信息,请参阅 “get-help about_signing”1
set-ExecutionPolicy RemoteSigned
使用 powershell 运行脚本报错:进行数字签名.无法在当前系统上运行该脚本.有关运行脚本和设置执行策略的详细信息
1
powershell "Set-ExecutionPolicy -ExecutionPolicy Unrestricted -force |Out-null"
安装Powershell
支持的 Windows 版本
- ✅ 指示仍支持 OS 或 PowerShell 版本
- ❌ 指示不支持 OS 或 PowerShell 版本
- 💢 指示该 OS 版本不再支持 PowerShell 版本
Windows版本 | 7.0 (LTS) | 7.1(最新版) | 7.2 (LTS-preview) |
---|---|---|---|
Windows Server 2016,2019,2022 | ✅ | ✅ | ✅ |
Windows Server 2012 R2 | ✅ | ✅ | ✅ |
Windows Server Core(2012 R2) | ✅ | ✅ | ✅ |
Windows Server Nano(1809) | ✅ | ✅ | ✅ |
Windows Server 2012 | 💢 | ❌ | ❌ |
Windows Server 2008 R2 | 💢 | ❌ | ❌ |
Windows 11 | ✅ | ✅ | ✅ |
Windows 10 1607 | ✅ | ✅ | ✅ |
Windows 8.1 | ✅ | ✅ | ❌ |
以下处理器体系结构在 Windows 上支持 PowerShell。
Windows版本 | 7.0 (LTS) | 7.1(最新版) | 7.2 (LTS-preview) |
---|---|---|---|
Nano Server 1803 | x64、Arm32 | X64 | X64 |
Windows Server 2012 R2 | x64、x86 | x64、x86 | x64、x86 |
Windows Server Core 2012 R2 | x64、x86 | x64、x86 | x64、x86 |
Windows 10 or 11 | x64、x86 | x64、x86、Arm64 | x64、x86、Arm64 |
Windows 8.1 | x64、x86 | x64、x86 | x64、x86 |
使用
PS1文件
一个 PowerShell 脚本其实就是一个简单的文本文件, 这个文件包含了一系列 PowerShell 命令,每个命令显示为独立的一行,对于被视为 PowerShell 脚本的文本文件,它的文件名需要加上 .PS1 的扩展名。
PowerShell 的执行策略
为防止恶意脚本的执行,PowerShell 有一个执行策略,默认情况下,这个执行策略被设置为受限。
我们可以使用: Get-ExecutionPolicy 命令查看 PowerShell 当前的执行策略。它有多个策略。
- AllSigned: 仅当脚本由受信任的发布者签名时才能运行.
- Bypass: 没有任何内容被阻止,也没有警告或提示.
- Default: 设置默认执行策略。 受限于 Windows 客户端或 RemoteSigned 受限于 Windows 服务器。
- RemoteSigned: 本地创建的脚本可以运行,但是从网上下载的脚本不能运行 (拥有数字证书签名的除外)
- Restricted: 不加载配置文件或运行脚本。 Windows 客户端计算机的默认执行策略。
- Undefined: 没有为范围设置执行策略。 从不是由组策略设置的范围中删除分配的执行策略。 如果所有范围内的执行策略为 Undefined,则有效的执行策略为 Restricted。
- Unrestricted: 允许所有的脚本执行.
1 |
|
常用命令
本部分内容由 xidaner 提供,在此只做排版修改
基础入门
像文件系统那样操作 Windows Registry
1 |
|
在文件里递回地搜索某个字符串
1 |
|
使用内存找到X个进程
1 |
|
循环(停止,然后重启)一个服务,如 DHCP
1 |
|
在文件夹里列出所有条目
1 |
|
递归一系列的目录或文件夹
1 |
|
在目录里移除所有文件而不需要单个移除
1 |
|
重启当前计算机
1 |
|
收集信息
查看当前Powershell版本
1 |
|
获取计算机组成或模型信息
1 |
|
获取当前计算机的 BIOS 信息
1 |
|
检查设备驱动程序版本
1 |
|
列出所安装的修复程序(如QFE或Windows Update文件)
1 |
|
获取当前登录计算机的用户的用户名
1 |
|
获取当前计算机所安装的应用的名字
1 |
|
获取分配给当前计算机的 IP 地址
1 |
|
获取当前机器详细的 IP 配置报道
1 |
|
找到当前计算机上使用 DHCP 启用的网络卡
1 |
|
在当前计算机上的所有网络适配器上启用 DHCP
1 |
|
软件管理
在远程计算机上安装 MSI 包
1 |
|
使用基于 MSI 的应用升级包升级所安装的应用
1 |
|
从当前计算机移除 MSI 包
1 |
|
机器管理
一分钟后远程关闭另一台机器
1 |
|
添加打印机
1 |
|
移除打印机
1 |
|
进入 PowerShell 会话
1 |
|
远程桌面
以下操作,PS 命令窗口,必须都以管理员身份执行.
机器 A 和 B,分别开启 PowerShell 远程管理服务
A = 192.168.3.32
1
PS >> Enable-PSRemoting
然后按照提示,选项选 Y,执行开启远程管理.
B = 192.168.3.37
1
PS >> Enable-PSRemoting
然后按照提示,选项选 Y,执行开启远程管理.
机器 A 和 B,分别信任需要远程管理的机器 IP 或名称
A=192.168.3.32
1
PS >> Set-Item WSMan:\localhost\Client\TrustedHosts -Value IP 地址
然后按照提示,选项选 Y,表示允许远程发送命令
B = 192.168.3.37
PS >>1
Set-Item WSMan:\localhost\Client\TrustedHosts -Value IP 地址
然后按照提示,选项选 Y,表示允许远程发送命令
在机器 A 上面,远程登录和执行命令到机器 B
A = 192.168.3.32
1
PS >> Enter-PSSession -ComputerName IP地址
语法
输出
Write-Host
1 |
|
函数
1 |
|
1 |
|