PowerShell 中的管道变量
我们通常使用 this
变量或关键字来表示各种编程语言中表达式中出现的最后一个对象。当我们想要无缝地编写脚本时,这种编写脚本的常用方法很方便。
本文将向我们展示如何通过使用 PowerShell 的 pipeline
变量在 Windows PowerShell 中使用相同的概念和技术。
了解 PowerShell 中的管道变量 $_
或 $PSItem
Windows PowerShell 有一个唯一的管道变量 $_
或 $PSItem
。需要 Windows PowerShell 将整个对象从一个命令传送到另一个命令的能力,以表示该对象遍历管道。
当一个 Windows PowerShell cmdlet 将某些内容通过管道传递给另一个命令时,该 cmdlet 可以发送一个对象。
对象可以是任何类型。该对象具有一组附加的方法和属性。
我们可以在独立对象上引用这些技术和属性,方法是创建对象本身,将其分配给新声明的变量,然后以这种方式引用其属性和方法。
例如,查询目录时,Get-Item
cmdlet 返回 System.IO.DirectoryInfo
对象。
Get-Item -Path 'C:\Windows' | Get-Member
然后,该对象具有许多我们可以参考的不同技术和属性。因此,例如,我们可以调用此对象的方法或引用其属性。
$windowsDir.GetFiles()
但是,如果我们使用像 Get-ChildItem
这样的 cmdlet,它会同时枚举许多目录呢?分配诸如 $dir1
、dir2
和 $dir3
之类的变量将具有挑战性。
我们需要一种更动态的方式来将它们设置在一个变量中,该变量表示处理时的每个目录对象。因此,我们需要在这个用例中使用 pipeline
变量。
使用 Get-ChildItem
示例,假设我们要使用 Get-ChildItem -Path C:\Windows\ -Directory
查找 C:\Windows
目录中的所有文件夹和子文件夹。
此 cmdlet 返回几十个目录。如果我们将此输出分配给一个变量,它将是一个对象数组,而不仅仅是一个对象。
因此,我们可以将所有这些对象一次一个地从 Get-ChildItem
cmdlet 传递到 ForEach-Object
cmdlet 并调用管道变量。
管道变量 $_
或 $PSItem
在处理每个对象时引用它。
例如,在下面,我们可以看到我们可以为使用 $_.Name
变量处理的每个目录引用 Name
属性。
Get-ChildItem -Path C:\Windows\ -Directory | ForEach-Object { $_.Name }
输出:
addins
ADFS
appcompat
AppPatch
AppReadiness
assembly
使用管道变量,我们可以表示任何方法和属性。该变量将始终与上一个命令中的对象具有相同的类型。
例如,我们可以在下面看到,如果你将管道变量本身处理为 Get-Member
,它会返回与 Get-Item
相同的对象类型。
Get-ChildItem -Path C:\Windows\ -Directory | ForEach-Object { $_ | Get-member } | Select-Object -First 1
输出:
TypeName: System.IO.DirectoryInfo
Name MemberType Definition
---- ---------- ----------
LinkType CodeProperty System.String LinkType{get=GetLinkType;}
我们将看到在引用或对每个处理的对象执行特定操作的命令中最常使用的管道变量。另一个例子是使用 Select-Object
命令的计算属性。
此方法允许脚本编写者操作通过表示来自管道的对象返回的输出。
例如,我们可以使用计算属性动态创建一个 DirectoryName
属性并将目录名称分配给它,而不是使用 ForEach-Object
命令只返回目录名称。
Get-ChildItem -Path C:\Windows\ -Directory | Select-Object -Property @{ Name = 'DirectoryName'; Expression = { $_.Name } }
输出:
DirectoryName
-------------
addins
ADFS
appcompat
AppPatch
AppReadiness
assembly
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。