此语法的作用是:| select@{E={$_.PSComputerName}; L='Server'},名称,ProcessId,PathName?
What does this syntax do: | select @{E={$_.PSComputerName}; L='Server'}, Name, ProcessId, PathName?
我有一个 Powershell 脚本,其中有一行:
$MyServers | select @{E={$_.PSComputerName}; L='AX Server'}, Name, ProcessId, PathName
这部分的significance/function是什么?它有什么作用?我在哪里可以理解符号?
@{E={$_.PSComputerName}; L='AX Server'}
它创建一个哈希表对象,其中键 E 将使用 $MyServers 中的 PSComputerName 值填充,L 将是 'AX Server'
PS C:\> @{E='Value 1'; L='Value 2'} | % { write-host $_.L }
Value 2
PS C:\> @{E='Value 1'; L='Value 2'} | Select-Object -Property *
IsReadOnly : False
IsFixedSize : False
IsSynchronized : False
Keys : {L, E}
Values : {Value 2, Value 1}
SyncRoot : System.Object
Count : 2
PS C:\> @{E='Value 1'; L='Value 2'} | % { write-host $_.GetType().FullName }
System.Collections.Hashtable
虽然 Viet 的回答在技术上并没有错,但它并没有真正解释为什么将哈希表创建为 Select-Object
.
的参数
它通常被称为计算 属性,用于自定义您从中选择的对象的输出。在您的情况下,它基本上用于将输出列从 PSComputerName
重命名为 AX Server
.
哈希表的L
键是Label
的缩写,E
键是Expression
的缩写。所以相当于这样写:
@{ Label='AX Server'; Expression={$_.PSComputerName} }
换句话说,输出一个名为AX Server
的列,其值等于列表中当前对象的PSComputerName
属性 ($_
)。
计算属性通常用于操作数据,而不仅仅是重命名列。因此,您可以执行一些操作,例如将 PSComputerName 更改为大写,对数值进行数学运算,甚至将多列合并为一列。
我有一个 Powershell 脚本,其中有一行:
$MyServers | select @{E={$_.PSComputerName}; L='AX Server'}, Name, ProcessId, PathName
这部分的significance/function是什么?它有什么作用?我在哪里可以理解符号?
@{E={$_.PSComputerName}; L='AX Server'}
它创建一个哈希表对象,其中键 E 将使用 $MyServers 中的 PSComputerName 值填充,L 将是 'AX Server'
PS C:\> @{E='Value 1'; L='Value 2'} | % { write-host $_.L }
Value 2
PS C:\> @{E='Value 1'; L='Value 2'} | Select-Object -Property *
IsReadOnly : False
IsFixedSize : False
IsSynchronized : False
Keys : {L, E}
Values : {Value 2, Value 1}
SyncRoot : System.Object
Count : 2
PS C:\> @{E='Value 1'; L='Value 2'} | % { write-host $_.GetType().FullName }
System.Collections.Hashtable
虽然 Viet 的回答在技术上并没有错,但它并没有真正解释为什么将哈希表创建为 Select-Object
.
它通常被称为计算 属性,用于自定义您从中选择的对象的输出。在您的情况下,它基本上用于将输出列从 PSComputerName
重命名为 AX Server
.
哈希表的L
键是Label
的缩写,E
键是Expression
的缩写。所以相当于这样写:
@{ Label='AX Server'; Expression={$_.PSComputerName} }
换句话说,输出一个名为AX Server
的列,其值等于列表中当前对象的PSComputerName
属性 ($_
)。
计算属性通常用于操作数据,而不仅仅是重命名列。因此,您可以执行一些操作,例如将 PSComputerName 更改为大写,对数值进行数学运算,甚至将多列合并为一列。