Powershell Cmdlet将提高您的Windows管理员技能

Powershell是新编码器在Windows上入门的理想方法。 Powershell是相等部分的命令行工具和脚本语言。它使您能够通过与管理计算机相同的命令来使计算机自动化。

使用Powershell

有两种使用Powershell的方法。有一个基本的命令行窗口,用于运行命令或调用预写的脚本。然后是ISE,它结合了CLI窗口和基本的开发环境。使用此工具,您可以编写和测试脚本。

ISE具有可搜索的命令列表,并且可以在不打开文件的情况下使用其终端窗口。命令列表允许您构造命令并插入它。如果您要进行更高级的开发,请安装Microsoft的Visual Studio代码。代码包括对Git版本控制和其他语言的支持。

Powershell的独特之处在于它完全由命令构建,Microsoft将其称为Cmdlet。如果通过命令行工作或编写复杂的脚本,这些命令是相同的。因此,在使用这些命令时,您可以考虑如何将它们串在一起以创建第一个脚本。

基础知识:Get-Command,Get-Help,Get-Member

所有Powershell命令都采用动词名词形式。这些动词通常是:获取,设置和新建

获取命令,您可以查看每个可用命令。在运行Get-Command时,您会看到大量以这些命令开头的命令。

仅从cmdlet的名称中查找,就会开始发现它们都具有相似的结构。您可以按名称调用它们,就像使用Get-Command一样。使用参数会更改您获得的信息。但是,如果您只使用过带有默认选项的命令,那么如何找出如何使用高级参数呢?

Get-Help cmdlet与Get-Command一起使用显示有关该cmdlet的更多信息。我们使用具有以下语法的cmdlet:

Get-Help Get-Command

然后,您将看到有关参数的基本信息。如果要查看参数详细信息和一些用法示例,请添加-Full参数。

如果仅想查看示例,则可以运行:

Get-Help Get-Command -Examples

此cmdlet返回仅帮助文件中的示例。这些示例非常有用,因为它们包含说明。此帮助文本说明了cmdlet和参数在运行时的作用。

如果要将帮助文件弹出到单独的窗口中,可以使用 -ShowWindow 。因此,如果您运行:

Get-Help Get-Command -ShowWindow

Powershell弹出带有完整帮助文件的窗口。您无需在此处使用Full参数,因为该窗口会拉出全文。

随着Powershell的使用越来越先进,您会发现越来越多地使用Get-Member。这是查看返回数据中可用字段的简便方法,以及可以运行的其他方法。 cmdlet通常会具有一个 -Property 参数,使您可以调用它们。

使用文件:Get-ChildItem,Remove-Item,Move-Item,Copy-Item < /

现在,您已经对cmdlet的工作原理以及获得帮助的方式有了一些了解,让我们进行更改。您可以使用 Get-ChildItem 命令获取任何文件夹的内容。例如,您可以使用驱动器号获取整个驱动器的文件。输入:

Get-ChildItem E:\

以下缩写:

Get-ChildItem -Path E:\

运行此命令时,将在“长度"属性,“名称"和“模式"下获得文件的列表及其最后写入时间,大小。 。模式是文件或文件夹的属性。可能的条目为:

  • 只读
  • 隐藏
  • 系统
  • 目录
  • 存档
  • 设备
  • 普通
  • 临时
  • SparseFile
  • ReparsePoint
  • 压缩
  • 离线
  • NotContentIndexed
  • 已加密
  • 如果要获取路径中所有子目录的内容,则要使用 -Recurse 参数。因此,然后运行:

    Get-ChildItem -Path E:\ -Recurse

    您的文件然后作为路径中每个文件夹的单独列表出现。

    要限制返回的数据,可以使用一些不同的参数:-文件-隐藏-只读。如果要过滤掉文件名,则可以在Path参数中使用通配符。要返回目录中的所有.doc文件,请输入:

    Get-ChildItem -Path E:\*.doc

    如果您还希望从子文件夹中获取所有内容,请再次添加-递归

    如果要删除文件,请使用:

    Remove-Item -Path E:\OldFile.txt

    要跳过对每个文件的确认,请添加参数 -Confirm $ false (Powershell对于布尔值有两个常量:$ true和$假)。要强制删除只读或隐藏文件,请使用 -Force 参数。

    移动文件同样简单。要将所有内容从闪存驱动器移动到文件夹中的本地驱动器,请使用:

    Move-Item -Path E:\* -Destination C:\FlashDriveArchive

    您也可以在-Path中命名单个文件以仅移动该文件。要复制文件而不是移动文件,请对 Copy-Item cmdlet使用相同的语法。

    监视和使用流程和服务

    每个Windows用户知道任务管理器。但是,可以通过 Get-Process 通过Powershell更快地查看当前正在运行的进程。如果您想知道该表中所有条目的含义,请将命令通过管道发送到 Get-Member 。输入cmdlet:

    Get-Process | Get-Member

    Get-member输出与Get-Process关联的方法和属性的列表。顶部的信息就是您感兴趣的信息。您会看到各种类型的内存都有别名。

    我们还可以从此输出中看到,我们可以获得 Product 属性,以便为进程取一个更友好的名称。让我们更改输出,以便为我们提供更好的信息:

    Get-Process | Select-Object Product, NPM, CPU, Name, ID | Sort-Object CPU -Descending

    (在下一节中,将有更多关于Select-Object和Sort-Object的信息。)

    现在您已经从Get-Process命令获得了ID,您可以使用Stop-Process cmdlet停止它。因此,如果您发现Chrome进程正在消耗所有资源,请在上一个命令中找到ID。然后,运行:

    Stop-Process -ID 45960

    用资源猪的ID替换 49560

    使用文件路径,可以使用Powershell启动进程。要启动Chrome,请运行以下命令:

    Start-Process -Filepath "C:\Program Files (x86) GoogleChromeApplicationchrome.exe"

    (由于空格,您需要在文件路径两边加上引号。) -ArgumentList 参数允许您传递命令行应用程序的选项。对于Chrome,您可以使用 –incognito 标志强制其以隐身模式启动。整个cmdlet是:

    Start-Process -Filepath "C:\Program Files (x86) GoogleChromeApplicationchrome.exe" -ArgumentList "--incognito"

    您可以使用service来完成大多数此类操作。 获取服务向您显示计算机上运行的所有服务的列表。与启动和停止服务相同,您可以使用启动服务停止服务

    处理数据:排序对象,选择对象,Where-Object

    当您使用cmdlet中的数据时,它不一定总是您想要的顺序。在这种情况下,您想使用排序对象。您可以在创建的变量上调用Sort-Object,但是主要是通过管道化另一个cmdlet来使用的。如上例所示,我们将一个对象的输出通过管道传递到另一个对象并对其进行排序。让我们创建一个由三个随机数组成的数组,并将其通过管道传递给Sort-Object。

    括号中的任何内容都将首先运行。使用以下命令创建一个简单的数组:

    $(Get-Random), $(Get-Random), $(Get-Random)

    请务必注意用逗号分隔值。因此,要查看对随机数进行排序的操作:

    $(Get-Random), $(Get-Random), $(Get-Random) | Sort-Object

    该cmdlet输出从最小到最大的数字,如果要反转,请添加-降序

    将cmdlet通过管道传递到Get-Member时,其属性比默认输出更多。您可以使用 Select-Object 选择特定的属性。

    就像Sort-Object一样,您可以通过管道cmdlet使用Select-Object。例如,要生成服务及其状态的表,请使用:

    Get-Service | Select-Object DisplayName, Status

    虽然输出所有这些数据都很不错,但是如果您只想查看特定数据怎么办? Get-ChildItem具有一些内置的过滤功能,但大多数命令没有。在那种情况下,您使用 Where-Object

    再次返回服务,这一次您将只获得正在运行的服务。输入cmdlet:

    Get-Service | Where-Object Status -eq "Running"

    比较中的 -eq = 的Powershell。在Powershell中,使用字母组合执行比较:

  • eq:等于
  • ne:不等于
  • lt:小于
  • gt :大于
  • ge:大于或等于
  • le:小于或等于
  • like:在通配符比较中使用like
  • 对于这些各种cmdlet,大多数输出​​都是表格式的。这将在具有标题的行和列中显示数据。要单独显示带有其属性列出的条目,请将cmdlet通过管道传递到 Format-List

    有时,对于Powershell窗口,输出的宽度过大。发生这种情况时,Powershell会将其强制为列表输​​出。为了确保将其保留为表格格式,请将输出通过管道传递到 Format-Table

    从命令行到脚本编制:后续步骤

    一次您很舒服,编写脚本只需在文本文件中输入cmdlet并将其保存即可。如果您对尝试编写脚本感到不安,请不要这样做。 Microsoft在每个cmdlet上都有大量文档。这已经超出了冗长的帮助文档,因此请务必查看Technet [不再可用]。

    如果您正在学习Powershell,请在评论中告诉我们您最喜欢的是什么。兴奋地做。如果您有更多的经验,我们很想听听您希望看到的更高级的话题。

    标签: PowerShell 脚本