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

问题描述 投票:2回答:3

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

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

并且输出看起来像:

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

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

powershell
3个回答
2
投票

有很多方法可以执行此操作,但一种方法是使用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

输出字符串会强制其输出为字符串,而不是输出的每一行的字符串数组。


2
投票

如果复制Perl和.Net,PowerShell将会发生。

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

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

“ Foreach”之所以如此神奇,是因为它可以让您控制格式,但是您希望对函数发出的对象感到满意。使PowerShell如此强大的原因是直接操纵“对象”本身而不是它的字符串表示形式。


0
投票

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

(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;}
© www.soinside.com 2019 - 2024. All rights reserved.