当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 初学者(第 3 部分):参数

作者:精品下载站 日期:2024-12-14 07:24:27 浏览:14 分类:玩电脑

PowerShell 初学者(第 3 部分):参数


现在,在第二部分《PowerShell 初学者指南》(第 2 部分):哲学动词-名词之后,我们将专门讨论 PowerShell 参数。但在我们开始第二个练习的答案之前。我们还对第二部分进行了简要回顾。

该系列的所有部分都可以在这里找到:PowerShell 初学者(系列)

回顾(第二部分)

锻炼

在第二部分中,我询问了如何使用 PowerShell 停止进程。

找出对进程执行某些操作的命令。我的意思是 Windows 进程。使用 Get-Command(搜索带有通配符或 TAB 的名词)来查找所有这些。然后打开记事本。尝试使用 PowerShell 关闭此记事本进程。

嗯,第一部分是搜索与进程相关的所有命令。有很多方法可以做到这一点。我给你看其中两个。


Get-Command -Noun Process

[玩转系统] PowerShell 初学者(第 3 部分):参数

这也可以工作:


Get-Command -Noun Proc*

第一个更清楚。也许你已经找到了另一种方法。请毫不犹豫地将其作为评论发布。

下一部分是打开记事本。您可以通过以图形方式搜索记事本或简单地在 PowerShell 中打开记事本来完成此操作。

[玩转系统] PowerShell 初学者(第 3 部分):参数

嗯,正如我们所看到的,有一个名为 Stop-Process 的命令。这听起来不错。让我们使用下面的命令停止记事本。


Stop-Process -Name notepad

好吧,我必须承认这并不像看起来那么容易。有些人可能跳过了 name 参数。这是不允许的。 cmdlet Get-Process 的参数名称是强制命名参数。这让我想到了本系列第三部分的主题:参数。

概括


每个名为 cmdlet 的 PowerShell 命令都包含一个动词和一个名词,并用连字符分隔。 Get-Command 显示所有可用的 PowerShell 命令。通配符 (*) 是任何值的占位符。尽可能使用 TAB 进行探索。


参数基础知识

强制参数(必填)

让我们继续上面的例子。我如何知道该参数是命名的强制参数?我很擅长阅读帮助。类型


Get-Help Stop-Process -Parameter Name

[玩转系统] PowerShell 初学者(第 3 部分):参数

正如我们所看到的,这个参数是必需的并且已命名。这实际上意味着什么?

  • 必填:表示该参数强制。所以你必须指定进程的名称
  • 命名:表示您必须输入参数名称和参数(在我们的例子中为记事本)。其他一切都会导致错误消息

[玩转系统] PowerShell 初学者(第 3 部分):参数

位置参数

这让我想到下一个例子。大多数 PowerShell 参数不是强制性的,也不是命名的。其中一些是位置参数。让我们看一下第二个示例,其中显示了 Get-EventLog cmdlet 的参数 LogName。


Get-Help Get-Eventlog -Parameter LogName

[玩转系统] PowerShell 初学者(第 3 部分):参数

疯狂的事情。它是必需的,但它的位置没有命名,而是 0。这意味着您必须指定 LogName,但您可以不指定参数名称。给出的第一个参数将自动绑定到该参数。让我们尝试一下。 PowerShell 要求我提供 LogName,因为 LogName 是必需参数。 (必需?正确)


Get-EventLog

[玩转系统] PowerShell 初学者(第 3 部分):参数

Windows 事件日志有 3 种主要类型:系统、应用程序和安全。如果我输入这三个参数之一而不输入参数名称,会发生什么情况?它之所以有效,是因为该参数未命名。


Get-EventLog System

[玩转系统] PowerShell 初学者(第 3 部分):参数

切换参数

如果参数不需要参数怎么办?我的意思是没有任何输入但有默认值的参数。它们称为切换参数。假设您想展示重新启动计算机后会发生什么。 (我们之前已经这样做过)。其参数是 WhatIf。


Get-Help Restart-Computer -Parameter WhatIf

[玩转系统] PowerShell 初学者(第 3 部分):参数

现在让我们将 WhatIf 参数与另一个需要参数(例如字符串)的参数进行比较。注意红线。与 WhatIf 不同,ComputerName 需要一个字符串。


Get-Help Restart-Computer -Parameter ComputerName

[玩转系统] PowerShell 初学者(第 3 部分):参数

WhatIf 不需要输入。 ComputerName 需要一个 HostName。这意味着您无需任何输入即可运行 WhatIf 参数。看这个:


Restart-Computer -WhatIf

[玩转系统] PowerShell 初学者(第 3 部分):参数

但是,当我们尝试重新启动远程计算机而不指定其名称时,我们会遇到问题。


Restart-Computer -ComputerName

[玩转系统] PowerShell 初学者(第 3 部分):参数

结论

在一篇博文中不可能涵盖所有参数主题。您可以使用以下命令开始探索所有参数:


Get-Help Get-Eventlog -Parameter *

到目前为止我们学到了什么?


参数不同。有必需的、位置的、切换的、强制的和非强制的参数。 Get-Help 可以帮助您探索命令的所有参数。为此,请运行 Get-Help Your-Command -Parameter *。尽可能使用 TAB。


一些有用的参数示例

最后,我想提供一些您可以使用的有用示例。如果这些命令对您来说看起来非常复杂,请不要担心。没关系。我们还没有做一些事情。他们只是为了玩。

从系统日志中检索最新的 5 个事件日志错误


Get-EventLog -LogName System -Newest 5 -EntryType Error | Format-Table Time,EntryType,Message -AutoSize -Wrap

[玩转系统] PowerShell 初学者(第 3 部分):参数

获取 Windows 进程的文件名

对于这个记事本应该已经启动了。


Get-Process notepad -FileVersionInfo

[玩转系统] PowerShell 初学者(第 3 部分):参数

显示 C:\Temp 中的所有 *.txt 文件

Get-ChildItem 与 dir 类似,但功能更强大。下面的命令显示 C:\Temp 中的所有 txt 文件。

[玩转系统] PowerShell 初学者(第 3 部分):参数

参数也可以省略。


Get-Childitem C:\Temp *.txt

[玩转系统] PowerShell 初学者(第 3 部分):参数

锻炼

请记住我们的行为准则:


自己动手。任何你自己不做的事情很快就会被忘记。


下一部分的练习是:

为什么这个命令不起作用?

[玩转系统] PowerShell 初学者(第 3 部分):参数

下次再见 PowerShell 初学者文章(第 4 部分):PowerShell 帮助 (Get-Help)


Patrick Gruenauer,PowerShell MVP

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯