跳转至主要内容

晴雨技术笔记

常用 PowerShell 命令

杏川铭心 杏川铭心
最后编辑于 2025年5月1日

现在 Windows 中,命令行越来越向 Powershell 的方向发展,传统的 cmd 微软已经不进行功能更新了。作为新时代的优秀青年(雾),我们肯定不能把自己局限在老旧的 net、wmic 一类的命令上(话说 wmic 在 Windows 11 上已经不自带了),必须与时俱进,学习先进的 Powershell 命令(大雾)

以下只是一些个人的记录,主要是供自己参考(笑)

远程管理

启用本机的远程管理

Windows 的远程管理服务叫 WinRM。这个命令就相当于 cmd 中的 winrm quickconfig。

Enable-PSRemoting

配置 WinRM 受信主机

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <要添加信任的主机名> [-Concatenate]

指定 -Concatenate 代表添加。另外要注意,这个命令需要连接 WinRM 服务,必须要先用上面的命令启用 WinRM 才行。

连接到远程 Powershell 会话

这个就相当于 Linux 上的 SSH 了。

Enter-PSSession -ComputerName <主机名或 IP 地址> -Credentials <用户名>

不过有一点要注意,似乎远程 Powershell 不支持原生命令行软件(即非 Powershell 命令)的终端交互。使用起来还是有一定不方便。

管理用户

注意下面所有涉及到密码的地方,都不能直接像 net user Administrator **** 这样明文输入。必须拿 Read-Host 来转换:

$password = Read-Host -AsSecureString

然后在命令中把 $password 变量传进去即可。

添加用户

New-LocalUser -Name <用户名> -Password <密码>

如果不希望指定密码就需要使用 -NoPassword 参数:

New-LocalUser -Name <用户名> -NoPassword

修改用户

Set-LocalUser -Name <用户名> -PasswordNeverExpires

修改跟添加的语法几乎是一致的。

上面这个例子把账户设置密码永不过期。

Set-LocalUser -Name <用户名> -Password <密码>

设置密码也是类似的。

也可以使用类似这样的语法:

$user = Get-User -Name <用户名>
$user | Set-User [参数]

管理服务

说实话 Powershell 这种谓词+主体的命令命名方式真的是很妙,记住一个,别的也能猜个十之八九。比 Linux 命令好记多了(笑)

就是语法实在啰嗦…

启动/重启/停止服务

Start-Service -Name <服务名称> # 启动
Stop-Service -Name <服务名称> # 停止
Restart-Service -Name <服务名称> # 重启

这里服务名称都是实际名称,不是显示名。

修改服务参数

Set-Service -Name <服务名称> -DisplayName <显示名称> -StartupType <启动模式>

启动模式一共四种(算上“无效”一共五种):Automatic(自动),AutomaticDelayedStart(自动(延迟启动)),Disabled(禁用),InvalidValue,Manual(手动)

用这个命令也可以用比较罗嗦的方式来启动/停止服务:

Set-Service -Name <服务名称> -Status <Paused|Running|Stopped>

处理文件

Powershell 管文件叫 Item。神奇。

创建文件

New-Item -Path <路径> -Name <名称> -ItemType "File"

文件夹就把 -ItemType 改成 Folder 即可。

删除文件

Remove-Item -Path <路径> -Force -Recursive

这个就相当于非常有名的 rm -rf (笑)

不过 Powershell 里面的 -Force 在针对文件的时候不是“强制”,而仅仅是“包含隐藏文件”…

复制文件

Copy-Item -Path <源路径> -Destination <目标路径> -Force -Recursive

移动和复制是一样的,把 Copy 改成 Move 即可。

参数 -Force 跟 -Recursive 的含义跟上面是一样的。

电源管理

Stop-Computer [-ComputerName <主机名或 IP 地址>] [-Force] [-Credential <用户名>] # 关机
Restart-Computer [-ComputerName <主机名或 IP 地址>] [-Force] [-Credential <用户名>] # 重启

如果电脑上有其他用户登陆的话需要指定 -Force。注意这个命令如果想远程执行,那么目标计算机必须得开启 WinRM。

不指定 -ComputerName 的话默认操作当前计算机。

另外似乎并没有 Start-Computer(恼)

获取帮助

Powershell 的内置帮助还是很好的。(主要是语法太啰嗦导致一看就懂,不像 Linux 需要翻半天)

Get-Help -Name <命令名称>

也可以下载完整帮助到本机。(不过完整版似乎只有英文?)

Update-Help

结语

这些只是 Powershell 命令的冰山一角,实际上 Powershell 非常强大(不然怎么好意思在名字里带 Power),最新版本的 Powershell 7 甚至是开源的,可以直接装在 Linux 上面(Linux:???)

另外,Powershell 的语法看起来很啰嗦,不过有很多命令是有简写的,而且往往同时支持 cmd 和 Linux 两种风格的简写。此外很多参数,例如 -Name -Path 这些,只要你按照顺序给出,可以不显式指定这些参数。

比如这个命令也是有效的:

cp <源文件> <目标路径>

是的没错这不是 Linux,这是 Powershell!哈哈哈哈哈哈哈哈哈(大雾)

杏川铭心
杏川铭心

名字越改越尬,但是网站一点没动🤪 曾用名Frank419(现在也是我在很多地方的用户名),网站站长。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注