将Powershell输出从列表视图更改为数组视图

7lrncoxx  于 12个月前  发布在  Shell
关注(0)|答案(2)|浏览(143)

我试图将PowerShell的小工具的输出从表视图转换为更像数组的东西。我使用列表格式来尽可能多地删除垃圾数据。目前,我使用以下代码来获取此输出:

Get-AccountsWithUserRight -Right SeNetworkLogonRight | Format-List -Property SID |Set-Variable -Name "Accounts"
$Accounts

字符串
输出量:

SID : S-1-5-32-583

SID : S-1-5-32-551

SID : S-1-5-32-545

SID : S-1-5-32-544


我不确定如何使用格式化/其他属性来剪切'SID'字符串,并返回一个输出,如“S-1-5-32-583,S-1-5-32-551,etc”。我需要这样做,因为我希望在另一个小程序中使用输出,额外的数据会导致错误。

z0qdvdin

z0qdvdin1#

Format-* xmlets只用于 * 显示格式 *;如果数据必须 * 以编程方式处理 *,则永远不要使用它们。Format-* xmlets输出 * 格式指令 *,而不是 * 数据 * -请参阅this answer
此外,要将输出保存到变量中,赋值比使用Set-Variable更简单:

# Save the account objects in a variable.
$Accounts = Get-AccountsWithUserRight -Right SeNetworkLogonRight

字符串
如果你想只输出/使用SID值,利用member-access enumeration

$Accounts.SID

qybjjes1

qybjjes12#

我知道这是一个旧的线程和原来的海报已经移动,但其他人可能会看到这个,所以这里有一个版本,我认为回答了原来的问题所有的方式。我的理解是,他希望一个变量有一个数组中的所有SID。

$Accounts = Get-AccountsWithUserRight -Right SeNetworkLogonRight | Select-Object -ExpandProperty SID

#OR

$Accounts = Get-AccountsWithUserRight -Right SeNetworkLogonRight | ForEach-Object { $_.SID }

字符串
任何一个都应该给予你想要的。Accounts变量现在应该只有SID而没有任何其他属性。我通常使用第二个例子,但我见过很多使用第一个的情况。

相关问题