本文介绍了如何从输出中删除花括号/花括号-PowerShell的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从输出中删除大括号/大括号

$t = [ADSI]"WinNT://$env:COMPUTERNAME"
$t1 = $adsi.PSBase.Children |where {$_.SchemaClassName -eq 'user'}  
$t1 |select Name,Fullname

名称全名
{Anon}{Anon Xen1}
{Anon1}{Anon1 Xen2}
{Anon2}{Anon2 Xen3}

推荐答案

之所以有大括号,首先是因为名称和全名属性是集合,而不是字符串。具体地说,它们是System.DirectoryServices.PropertyValueCollection对象。

$t = [adsi]"WinNT://$env:COMPUTERNAME"
$t1 = $t.PSBase.Children |where {$_.SchemaClassName -eq 'user'}
$t1[0]|get-member

截取的额外属性

TypeName: System.DirectoryServices.DirectoryEntry
Name                        MemberType Definition
----                        ---------- ----------
FullName                    Property   System.DirectoryServices.PropertyValueCollection FullName {get;set;}
Name                        Property   System.DirectoryServices.PropertyValueCollection Name {get;set;}

然后,您可以创建一个自定义对象,并与前面的答案类似地为其赋值,但我会遍历集合,而不是任意获取第一个成员。

$t = [adsi]"WinNT://$env:COMPUTERNAME"
$t1 = $t.PSBase.Children |where {$_.SchemaClassName -eq 'user'}
$t1 | ForEach-Object{
    $temp = New-Object PSObject -Property @{
        "Name" = $_.Name | ForEach-Object {$_}
        "FullName" = $_.FullName | ForEach-Object {$_}
    }
    $temp
}

Name                                                        FullName
----                                                        --------
Administrator
Guest

如果您想将其缩短为一个班轮,您可以使用以下选项:

([adsi]"WinNT://$env:COMPUTERNAME").PSBase.Children|?{$_.SchemaClassName -eq 'user'}|%{$temp=""|Select Name,FullName;$temp.Name=$_.Name|%{$_};$temp.FullName=$_.FullName|%{$_};$temp}

Name                                                        FullName
----                                                        --------
Administrator
Guest

这篇关于如何从输出中删除花括号/花括号-PowerShell的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 22:22