迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

PowerShell 中的管道变量

作者:迹忆客 最近更新:2024/02/01 浏览次数:

我们通常使用 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,它会同时枚举许多目录呢?分配诸如 $dir1dir2$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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 PowerShell 过滤文件和文件夹

发布时间:2024/02/05 浏览次数:195 分类:编程语言

本文将讨论 PowerShell Get-ChildItem cmdlet,我们将使用它来获取目录中的所有项目并利用其过滤器开关参数。在某些情况下,我们需要检查文件是否存在于特定位置或目录中。

从 PowerShell 中的文件名中删除路径和扩展名

发布时间:2024/02/05 浏览次数:86 分类:编程语言

本教程将介绍在 PowerShell 中从文件名中删除路径和扩展名的不同方法。PowerShell 支持处理系统中的各种文件操作。你可以在 PowerShell 中执行创建、复制、移动、重命名、编辑、删除和查看文件等

使用 PowerShell 连接文件

发布时间:2024/02/05 浏览次数:159 分类:编程语言

本教程将教你使用 PowerShell 连接文件。PowerShell 允许你执行不同的文件操作,例如创建、复制、移动、删除、查看和重命名文件。

使用 PowerShell 从路径中提取文件名

发布时间:2024/02/05 浏览次数:52 分类:编程语言

本教程将教你如何使用 PowerShell 从路径中提取文件名。文件路径告诉文件在系统上的位置。在 PowerShell 中处理文件时,你可能只需要从路径中获取文件名。

使用 PowerShell 从计算机存储中删除证书

发布时间:2024/02/05 浏览次数:200 分类:编程语言

本教程将教你使用 PowerShell 从证书存储中删除证书。在 Windows 操作系统中,证书存储在计算机本地的证书存储中。它包含不同认证机构颁发的各种证书。

在 PowerShell 中清除变量内容

发布时间:2024/02/05 浏览次数:69 分类:编程语言

本教程将教你在 PowerShell 中清除变量内容。变量是值的存储位置。你可以将所有类型的值存储在 PowerShell 变量中。

PowerShell 中的空变量

发布时间:2024/02/05 浏览次数:64 分类:编程语言

本文讨论了 null 变量、在 PowerShell 中以不同语法使用 null 变量的影响以及检查 null 值的方法。PowerShell 处理值为 null 的 $Null 对象,并且某些命令需要一些输出才能生成。

PowerShell 通过网络复制文件

发布时间:2024/02/05 浏览次数:162 分类:编程语言

本教程将教你使用 PowerShell 通过网络共享复制文件。PowerShell 是一个强大的工具,可让你从其命令行界面执行不同的文件和文件夹操作。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便