
常用 PowerShell 命令

现在 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!哈哈哈哈哈哈哈哈哈(大雾)