作为 .NET 平台的开发人员,我喜欢通过浏览 API 文档来“探索”平台、框架或 API,这些文档解释了所有内容 - 所有内容都涵盖在内,当我使用 Reflector 或 Object Browser 等工具时,我就可以确切地知道我正在使用什么。当我编写自己的软件时,我可以使用 Object Test Bench 等工具直接探索和使用我的类。我正在寻找类似的东西,但适用于 PowerShell - 以及避免使用文本模式的那些。
PowerShell 很棒,它有很多很酷的“可发现性”,比如“动词-名词”语法,但是当我使用 Exchange Server 时,例如,我想获取接收连接器上的 AD 权限列表,我得到了以下列表:
[PS] C:\Windows\system32>Get-ADPermission "Client SVR6" -User "NT AUTHORITY\Authenticated Users" | fl
User : NT AUTHORITY\Authenticated Users
Identity : SVR6\Client SVR6
Deny : False
AccessRights : {ExtendedRight}
IsInherited : False
Properties :
ChildObjectTypes :
InheritedObjectType :
InheritanceType : All
User : NT AUTHORITY\Authenticated Users
Identity : SVR6\Client SVR6
Deny : False
AccessRights : {ExtendedRight}
IsInherited : False
Properties :
ChildObjectTypes :
InheritedObjectType :
InheritanceType : All
User : NT AUTHORITY\Authenticated Users
Identity : SVR6\Client SVR6
Deny : False
AccessRights : {ExtendedRight}
IsInherited : False
Properties :
ChildObjectTypes :
InheritedObjectType :
InheritanceType : All
User : NT AUTHORITY\Authenticated Users
Identity : SVR6\Client SVR6
Deny : False
AccessRights : {ExtendedRight}
IsInherited : False
Properties :
ChildObjectTypes :
InheritedObjectType :
InheritanceType : All
User : NT AUTHORITY\Authenticated Users
Identity : SVR6\Client SVR6
Deny : False
AccessRights : {ExtendedRight}
IsInherited : False
Properties :
ChildObjectTypes :
InheritedObjectType :
InheritanceType : All
User : NT AUTHORITY\Authenticated Users
Identity : SVR6\Client SVR6
Deny : True
AccessRights : {ReadProperty}
IsInherited : True
Properties : {ms-Exch-Availability-User-Password}
ChildObjectTypes :
InheritedObjectType : ms-Exch-Availability-Address-Space
InheritanceType : Descendents
[PS] C:\Windows\system32>
请注意,前几个条目包含相同的文本 - 无法轻易区分它们。但如果有 GUI,我想它应该可以让我更好地深入了解差异。
有什么工具可以做到这一点吗?
答案1
如果您想要一个 GUI,升级到 PowerShell 3 会有所帮助,它具有 Show-Command 命令行,您可以在其中键入任何可用命令的名称部分并在 Windows 中而不是在命令行中获取它的参数和帮助。
但这仅适用于命令,它不知道您可能使用的数千个对象及其属性。
在您的例子中,您使用 | format-list (fl) 列出 AD 对象的属性。这通常会显示对象的部分属性,但不是全部,请尝试:
fl *
显示对象的所有属性,或者指定您感兴趣的属性名称:
fl User,Identity
完整语法如下:
format-list -property User,Identity