您必须知道的 20 个 Windows PowerShell 命令
Windows PowerShell 是新的命令行 shell,它比命令提示符更强大且可编写脚本。在我三年的使用经验中,我发现它真的很有用,特别是如果你喜欢自动化或脚本化任务。然而,我们大多数人要么不知道它,要么不喜欢用它来代替旧的命令行 shell。
在这篇文章中,我将分享Windows PowerShell 的有用而简单的命令(带有示例)。您可以使用这些命令来完成
大量任务——从获得帮助到启动进程。让我们开始?
注意: Windows PowerShell 在构建时考虑了向后兼容性,因此支持命令提示符的许多命令。也就是说,您可以在其多彩的新界面中继续使用旧命令。
另请阅读: 在 Windows 10 上自动执行重复性任务的提示和工具
获得帮助 [帮助]
如果您是 PowerShell 的新手,您可能会遇到麻烦;在这种情况下,Get-Help 将成为您的救星。它提供有关PowerShell 的cmdlet、命令、函数、脚本和工作流的必要信息。
此外,这很简单:您需要键入Get-Help
后跟命令,您需要查找其中的详细信息。例如,您可以使用 获取有关“Get-Process”的信息Get-Help Get-Process
。

获取命令 [gcm]
Windows PowerShell 允许使用 Get-Command 发现其命令和功能。它根据您的搜索参数显示特定功能或特定用途的命令列表。
您只需Get-Command
在 PowerShell 中键入搜索查询即可。例如,Get-Command *-service*
显示名称中带有“-service”的命令。请记住在查询的两边都使用星号,因为它是有助于搜索未知数的通配符。

调用命令 [icm]
当您希望在单台或多台计算机上本地或远程运行 PowerShell 的命令或脚本时,“Invoke-Command”是您的好帮手。它易于使用,可帮助您批量控制计算机。
您必须键入Invoke-Command
后跟命令或脚本及其完整路径。例如,您可以使用或在远程计算机“Server01”上使用运行命令“Get-EventLog”。Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50}
Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50} -ComputerName Server01

调用表达式 [iex]
Invoke-Expression运行另一个命令或表达式。如果您提供一个表达式或字符串作为其输入,则此命令首先对其求值,然后运行它,但与上一个命令不同,它也仅在本地运行。
您必须键入Invoke-Expression
后跟命令或表达式。例如,您可以为变量“$Command”分配一个字符串,告诉命令“Get-Process”。当您运行时Invoke-Expression $Command
,“Get-Process”会在您的本地计算机上作为命令运行。

调用 WebRequest [iwr]
使用 Invoke-WebRequest 在 Windows PowerShell 上工作时,您可以下载、登录和抓取有关网站和 Web 服务的信息。
Invoke-WebRequest
您必须像其参数一样使用它。例如,您可以使用命令 as 获取给定网页上的链接(Invoke-WebRequest -Uri "https://docs.microsoft.com").Links.Href
。
设置执行策略
尽管可以在 Windows PowerShell 中创建和执行脚本(扩展名为“ps1”);但是,出于安全目的,有一些限制。但是您可以使用 Set-ExecutionPolicy 命令切换安全级别。
您可以键入Set-ExecutionPolicy
后跟四个安全级别之一 –受限、远程签名、全部签名或无限制以使用该命令。例如,您可以使用分配受限策略状态Set-ExecutionPolicy -ExecutionPolicy Restricted
。
获取项目 [gi]
如果您要在任何给定位置查找有关某个项目的信息,比如硬盘上的某个文件,Get-Item 是在 Windows PowerShell 中获取它的最佳方式。您必须知道,除非您明确指定,否则它不会获取 item 的内容,例如给定目录中的文件和子目录。
您必须键入Get-Item
后跟路径或字符串及其参数(如果有)。例如,您可以使用 .get 获取当前目录中所有以“M”开头的项目(文件或文件夹)Get-Item M*
。除了目录内容,它还可以获取注册表项的内容。
复制项目[复制]
如果您需要复制存储磁盘上的文件和目录或注册表中的注册表项和键,您可以使用 Copy-Item。它的功能类似于命令提示符中的“cp”命令,但要好得多。
您也可以使用Copy-Item
命令在同一命令中复制和重命名项目——给目标一个新名称。例如,您可以使用 复制“Services.htm”并将其重命名为“MyServices.txt” Copy-Item "C:\Services.htm" -Destination "C:\MyData\MyServices.txt"
。
删除项目 [del]
如果您希望删除文件、文件夹、函数以及注册表项和变量等项目,Remove-Item 是适合您的命令。我发现有趣的是,它提供了包含和排除项目的参数。
您可以使用Remove-Item
命令使用参数从特定位置删除项目。例如,您可以使用命令删除文件“MyServices.txt” Remove-Item "C:\MyData\MyServices.txt"
。
获取内容 [猫]
当您需要查看特定位置的文本文件的内容时,您可以在像 Notepad++ 这样的代码/文本编辑器中打开并阅读它。在 Windows PowerShell 中,您可以使用 Get-Content 来检索内容而无需打开文件。
例如,您可以检索“Services.htm”的 50 行内容,然后您可以使用Get-Content "C:\Services.htm" -TotalCount 50
.
设置内容 [sc]
您可以使用 Set-Content 将文本保存到文件,类似于Bash Shell的“echo”命令。结合 Get-Content,您还可以使用此命令检索一个文件的内容并将其复制到另一个文件中。
例如,您可以键入Set-Content
以写入或用新内容替换文件内容。此外,您可以将它与前面命令的示例结合起来,将其输出保存到一个名为“Sample.txt”的新文件中Get-Content "C:\Services.htm" -TotalCount 50 | Set-Content "Sample.txt"
。
获取变量 [gv]
如果您希望在 Windows PowerShell 中使用变量,Get-Variable 命令可帮助您可视化变量的值。它以表格形式显示它们,并允许包括、排除和使用通配符。
Get-Variable
您可以通过键入后跟其选项和参数来使用此命令。例如,您可以使用以下代码检索名为“desc”的变量的值Get-Variable -Name "desc"
:
设置变量 [set]
您可以使用命令 Set-Variable分配或更改/重置变量的值。作为快捷方式,您还可以使用 ${ $VarName = VarValue }$格式设置一个简单变量,例如$desc = "A Description"
.
您可以使用命令Set-Variable
后跟其参数来设置变量。例如,我们可以使用命令为名为“desc”的变量设置值Set-Variable -Name "desc" -Value "A Description"
。
获取进程 [gps]
我们通常使用任务管理器来查找计算机上正在运行的进程。在 Windows PowerShell 中,任何人都可以使用 Get-Process 获取当前正在运行的进程的列表,您也可以进一步处理这些进程。
您可以将命令Get-Process
与搜索查询一起编写。例如,如果您需要有关名称中带有“explore”的进程的信息,您可以键入Get-Process *explore*
(注意星号)。
启动进程 [sap]
Windows PowerShell 使您可以轻松地在您的计算机上启动一个或多个进程。我发现此命令在脚本应用程序中很方便,因为它是自动化任务所需的必备命令之一。
您可以键入Start-Process
后跟其参数以使用该命令。例如,您可以通过Start-Process -FilePath "notepad" -Verb runAs
在 Windows PowerShell 中键入来启动记事本。
停止进程 [kill]
借助命令 Stop-Process,您可以使用其名称或 PID(进程 ID)停止计算机上运行的进程的特定或所有实例。引人注目的是,您可以检测进程是否停止,甚至可以停止不属于当前用户或未启动的进程。
您可以键入命令Stop-Process
后跟其参数来停止给定的进程。例如,您可以使用命令停止记事本的所有进程Stop-Process -Name "notepad"
。
获取服务 [gsv]
当您需要有关计算机上特定服务(正在运行或已停止)的信息时,可以使用 Get-Service。它显示系统中安装的服务,并提供过滤、包含和排除它们的选项。
如果你想使用这个命令,你可以输入Get-Service
它的参数。例如,键入以下内容Get-Service | Where-Object {$_.Status -eq "Running"}
以使服务在您的系统上“运行”。
启动服务 [sasv]
如果您希望在您的计算机上启动服务,Start-Service 命令可以帮助您从 Windows PowerShell 执行相同的操作。我发现它的功能足以启动一项服务,即使该服务在您的计算机上被禁用也是如此。
使用命令时需要指定服务的名称Start-Service
。例如,Start-Service -Name "WSearch"
在您的本地计算机上启动服务“Windows Search”。
停止服务 [spsv]
如果您希望停止计算机上运行的服务,Stop-Service 命令会很有帮助。您需要指定服务的名称以及Stop-Service
。例如,键入Stop-Service -Name "WSearch"
以停止计算机上的“Windows Search”服务。
转换为 HTML
PowerShell 可以提供有关您的系统的惊人信息。然而,它主要以难以理解的格式呈现,但您可以使用 ConvertTo-HTML创建和格式化报告以对其进行分析或将其发送给某人。
您可以ConvertTo-HTML
使用管道与另一个命令的输出一起使用。例如,Get-Service | ConvertTo-HTML -Property Name, Status > C:\Services.htm
以 Web 报告的形式显示所有服务的列表及其状态,该报告存储在文件“Services.htm”中。