簡單的Powershell:輸出基本文本,而不是從Get-ADOrganizationalUnit格式化



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

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

输出如下所示:

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

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

有很多方法可以做到这一点,但一种方法是使用 foreach 对象 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

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

PowerShell是如果Perl和.Net复制会发生什么。

这不是一个答案,但Andy的答案之所以如此有效,与你对这个新工具的不熟悉有关。PowerShell在对象中"思考"。PowerShell对"你能给我一些组织单位吗?"这个问题的回答是少数几个OU。这些对象具有方法和属性。Perl管道字符串,.NET本身不"管道"。PowerShell 管道对象。

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

"Foreach"之所以神奇,是因为它可以让你控制格式,但你会想要适应函数发出的对象。直接操作"对象"本身,而不是它的字符串表示,是PowerShell如此强大的原因。

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

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

在一般情况下,使用您运行的任何命令并找到可用属性,然后您可以以与"(...)"相同的方式隔离其中任何一个。上面的名称",例如"(...国家"或"(...状态'。

PS C:tempcheckdirs> 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;}

最新更新