这实际上适用于几乎所有PS命令,但我正在运行:
Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase $strDomainDN -SearchScope OneLevel
并且输出看起来像:
$_.Name
------
OU1
OU2
OU3
...
而且我想要的是没有标题的实际列表($ _。Name或“ ------”)。我知道这可能非常简单,但在尝试格式化字符串时也会感到非常沮丧。任何帮助,将不胜感激。
有很多方法可以执行此操作,但一种方法是使用foreach-object cmdlet提取所需的内容。假设只需要“名称”列,则可以执行以下操作:
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
输出字符串会强制其输出为字符串,而不是输出的每一行的字符串数组。
如果复制Perl和.Net,PowerShell将会发生。
这不是答案,但是Andy的答案如此有效的原因与您对这个新工具的不熟悉有关。 PowerShell在对象中“思考”。 PowerShell对以下问题的回答:“您能给我一些组织单位吗?”是少数几个OU。这些对象具有方法和属性。 Perl用管道输送字符串,而.NET本身并不“用管道输送”。 PowerShell管道对象。
您收到的输出是CLI格式的对象属性表。您要求PowerShell返回名称,因此它返回了包含Name属性的对象。为了方便地以CLI /文本方式表示这些对象,PowerShell通过调用其toString()方法来生成带有标签,分隔符“ -----”和数据行的表。
“ Foreach”之所以如此神奇,是因为它可以让您控制格式,但是您希望对函数发出的对象感到满意。使PowerShell如此强大的原因是直接操纵“对象”本身而不是它的字符串表示形式。
我也遇到同样的问题,但是找到了一个更简单的解决方案。
(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;}