在 PowerShell 中进行管道传输时 $_ 是如何工作的?

鸟人

我很困惑 $_ 变量在管道的某些上下文中是如何工作的。在此备份 Bitlocker 密钥的示例中:

Get-BitlockerVolume | % {$_.KeyProtector | ? RecoveryPassword | Backup-BitlockerKeyProtector -MountPoint $_.MountPoint}

我是这样读英文的:

  • 获取所有 BitLockerVolume 对象
  • 对于每个 BitLockerVolume 对象,通过管道传递 KeyProtector 字段
  • 管道 KeyProtector 对象为具有 RecoverPassword 的对象进一步转发
  • 运行 Backup-BitlockerKeyProtector,并提供 MountPoint

但是,MountPoint 是 BitLockerVolume 对象的一个​​字段,如下所示:

PS C:\Windows\system32> Get-BitLockerVolume | Get-Member | Where-Object {$_.Name -eq "MountPoint"}


   TypeName: Microsoft.BitLocker.Structures.BitLockerVolume

Name       MemberType Definition
----       ---------- ----------
MountPoint Property   string MountPoint {get;}

那么,对于包裹在括号 { } 中的整个块,通过任何数量的管道,$_ 变量是否总是相同的?例如,我们正在向前输送的对象正在发生变化。它不再是 BitLockerVolume 对象,而是 KeyProtector 对象。那么在这种情况下,$_ 是否总是引用 BitLockerVolume 对象,还是会根据管道中通过管道进一步传输的不同类型的对象在管道中进一步更改?

弧集

所以 $_ 是来自当前管道的信息。

1,2 | %{
    $_
}

回复

1
2

尽管

1,2 | %{
    "a","b" | %{
        $_
    }
}

回复

a
b
a
b

我们可以在第一个中看到 %_ 的输出来自给出的最后一个信息,即1,2. 虽然下一个示例仍然循环 1,2 但输出来自内部的管道a,b

有办法通过将第一个管道信息存储到第二个管道中的变量来解决这个问题

1,2 | %{
    $Num = $_
    "a","b" | %{
        $Num
    }
}

哪种情况下输出是

1
1
2
2

在您给出的示例中,让我们看一下它的格式

Get-BitlockerVolume | % {
    $_.KeyProtector | ? RecoveryPassword | Backup-BitlockerKeyProtector -MountPoint $_.MountPoint
}

你有 2 个不同的管道。首先是获得“BitlockerVolumevolume”。第二个开始是你发送BitlockerVolume's KeyProtector.

就像在说

对于每个 Bitlocker 卷,获取 KeyProtector。

对于每个 KeyProtector,请为我获取具有成员 RecoveryPassword 的密钥保护器

Foreach KeyProtector with member RecoveryPassword, Backup Bitlocker Key Protector Using KeyProtector's Mountpoints

因此,在最后一个说明中,我还假设您给出的示例不起作用。你可能正在寻找的是这个......

Get-BitlockerVolume | % {
    $MountPoint = $_.MountPoint
    $_.KeyProtector | ? RecoveryPassword | Backup-BitlockerKeyProtector -MountPoint $MountPoint -KeyProtectorId $_.KeyProtectorId
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Powershell中进行分组/计数

来自分类Dev

如何在Powershell中将“成员”管道传输到csv

来自分类Dev

管道,它们如何工作?

来自分类Dev

Count属性在Powershell中如何工作?

来自分类Dev

$ env:Username在PowerShell中如何工作?

来自分类Dev

PowerShell如何管道FOR循环

来自分类Dev

如何使@'...'@在powershell.exe-命令“”中工作?

来自分类Dev

通过CMD和PowerShell进行管道传输时,行为和输出不同

来自分类Dev

如何在PowerShell中进行验证过程?

来自分类Dev

如何在Powershell中进行类型转换

来自分类Dev

在标签上运行管道时如何获取分支名称?

来自分类Dev

可以在python -c中进行管道传输

来自分类Dev

如何在Powershell中进行时间“ HH:mm”比较?

来自分类Dev

Powershell获取主机privatedata,它如何工作?

来自分类Dev

管道输入时,PowerShell输入无法正常工作

来自分类Dev

在PowerShell中进行“实时”流式传输?

来自分类Dev

在Powershell中进行分组/计数

来自分类Dev

在C#中工作时如何调用FailoverClusters PowerShell模块?

来自分类Dev

图形管道如何工作?

来自分类Dev

Linux中的管道传输/重定向是如何工作的?

来自分类Dev

如何在管道中进行ip连接?

来自分类Dev

如何在带有CentOS 7的Centos Web面板中进行电子邮件管道传输/转发?

来自分类Dev

如何在Android中进行流式传输时实时更改MediaCodec编码比特率?

来自分类Dev

Powershell如何管道FOR循环

来自分类Dev

通过管道传输时,sed无法正常工作

来自分类Dev

我将如何测试PowerShell函数正确地从管道流式传输输入?

来自分类Dev

在与mysql进行管道传输的同时对mysqldump进行处理

来自分类Dev

PowerShell,如何提供管道变量?

来自分类Dev

如何通过 ZIP 进行管道传输并在存档中有一个可用的文件名

Related 相关文章

  1. 1

    在Powershell中进行分组/计数

  2. 2

    如何在Powershell中将“成员”管道传输到csv

  3. 3

    管道,它们如何工作?

  4. 4

    Count属性在Powershell中如何工作?

  5. 5

    $ env:Username在PowerShell中如何工作?

  6. 6

    PowerShell如何管道FOR循环

  7. 7

    如何使@'...'@在powershell.exe-命令“”中工作?

  8. 8

    通过CMD和PowerShell进行管道传输时,行为和输出不同

  9. 9

    如何在PowerShell中进行验证过程?

  10. 10

    如何在Powershell中进行类型转换

  11. 11

    在标签上运行管道时如何获取分支名称?

  12. 12

    可以在python -c中进行管道传输

  13. 13

    如何在Powershell中进行时间“ HH:mm”比较?

  14. 14

    Powershell获取主机privatedata,它如何工作?

  15. 15

    管道输入时,PowerShell输入无法正常工作

  16. 16

    在PowerShell中进行“实时”流式传输?

  17. 17

    在Powershell中进行分组/计数

  18. 18

    在C#中工作时如何调用FailoverClusters PowerShell模块?

  19. 19

    图形管道如何工作?

  20. 20

    Linux中的管道传输/重定向是如何工作的?

  21. 21

    如何在管道中进行ip连接?

  22. 22

    如何在带有CentOS 7的Centos Web面板中进行电子邮件管道传输/转发?

  23. 23

    如何在Android中进行流式传输时实时更改MediaCodec编码比特率?

  24. 24

    Powershell如何管道FOR循环

  25. 25

    通过管道传输时,sed无法正常工作

  26. 26

    我将如何测试PowerShell函数正确地从管道流式传输输入?

  27. 27

    在与mysql进行管道传输的同时对mysqldump进行处理

  28. 28

    PowerShell,如何提供管道变量?

  29. 29

    如何通过 ZIP 进行管道传输并在存档中有一个可用的文件名

热门标签

归档