跳转至主要内容
晴雨技术笔记

常用 PowerShell 命令

杏川铭心 杏川铭心
最后编辑于 2025年5月1日
  • 本文最后编辑于 391 天前,部分信息可能已严重过时,请注意甄别。
  • 现在 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!哈哈哈哈哈哈哈哈哈(大雾)

    • 特别提醒:

      评论看到就会回,但是不保证速度,有的时候站长忘记看的话就会出现审核好几天也没有动静的情况……

      有垃圾评论检查,如果评论之后直接消失、没反应说明被识别为垃圾评论了。

      如果等不及的话,可以加群!

    杏川铭心
    杏川铭心

    群号:1101838302,欢迎友好交流 :P 曾用名Frank419(现在也是我在很多地方的用户名),网站站长。

    发表回复

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