Simple Powershell:输出基本文本而不是Get-ADOrganizationalUnit格式

时间:2011-05-16 20:44:56

标签: powershell

这几乎适用于任何PS命令,但我正在运行:

Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase $strDomainDN -SearchScope OneLevel

,输出如下:

$_.Name
------
OU1
OU2
OU3
...

我想要的只是没有标题的实际列表($ _。名称或“------”)。我知道这可能非常简单,但在尝试格式化字符串时也非常令人沮丧。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但一种方法是使用foreach-object cmdlet选择所需的内容。假设您只需要Name列,您可以执行以下操作:

13 >  dir | select name | foreach-object {$_.Name} | out-string
Contacts
Desktop
Documents
Downloads
Favorites
Links
Lync Recordings
Music
NetApp
Pictures
Podcasts
PowerShellASP
Saved Games
Searches
Tracing
Videos
Virtual Machines

Out-String强制它输出到字符串而不是输出的每一行的字符串数组。

答案 1 :(得分:2)

如果Perl和.Net再现,PowerShell会发生什么。

这不是一个答案,但Andy的答案工作得很好的原因与你对这个新工具的不熟悉有关。 PowerShell在对象中“思考”。 PowerShell对这个问题的回答是:“你能给我一些组织单位吗?” OU是少数几个。这些对象具有方法和属性。 Perl管道字符串和.NET本身并不“管道”。 PowerShell管道对象。

您收到的输出是CLI格式的对象属性表。您要求PowerShell返回名称,因此它返回包含Name属性的对象。为了以CLI /文本方式方便地表示这些对象,PowerShell通过调用其toString()方法生成带有标签,分隔符“-----”和数据行的表。

“Foreach”具有神奇之处,因为它可以让你控制格式化,但是你会想要对这些函数发出的对象感到满意。直接操作“对象”本身,而不是它的字符串表示,是PowerShell如此强大的原因。

答案 2 :(得分:1)

我遇到了同样的问题,但是找到了一个更简单的解决方案。

(Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchScope OneLevel).Name

,在一般情况下,执行任何运行的命令并找到可用的属性,然后可以按照与上面的'(...)。Name'相同的方式隔离它们中的任何一个,例如'(...)。国家/地区或'(...)。国家/地区。

PS C:\temp\checkdirs> Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchScope OneLevel | gm


   TypeName: Microsoft.ActiveDirectory.Management.ADOrganizationalUnit

Name                     MemberType            Definition
----                     ----------            ----------
Contains                 Method                bool Contains(string propertyName)
Equals                   Method                bool Equals(System.Object obj)
GetEnumerator            Method                System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode              Method                int GetHashCode()
GetType                  Method                type GetType()
ToString                 Method                string ToString()
Item                     ParameterizedProperty Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item(s...
City                     Property              System.String City {get;set;}
Country                  Property              System.String Country {get;set;}
DistinguishedName        Property              System.String DistinguishedName {get;set;}
LinkedGroupPolicyObjects Property              Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Linked...
ManagedBy                Property              System.String ManagedBy {get;set;}
Name                     Property              System.String Name {get;}
ObjectClass              Property              System.String ObjectClass {get;set;}
ObjectGUID               Property              System.Nullable`1[[System.Guid, mscorlib, Version=4.0.0.0, Culture=ne...
PostalCode               Property              System.String PostalCode {get;set;}
State                    Property              System.String State {get;set;}
StreetAddress            Property              System.String StreetAddress {get;set;}