【发布时间】:2020-11-20 03:00:08
【问题描述】:
我偶然发现了如何通过使用"$(...)" 始终如一地获取类的类型加速器名称(即短名称),例如:
PS H:\> "$([System.DirectoryServices.DirectorySearcher])"
adsisearcher
PS H:\> "$([adsisearcher])"
adsisearcher
PS H:\> "$([type]'System.DirectoryServices.DirectorySearcher')"
adsisearcher
PS H:\> "$([type]'adsisearcher')"
adsisearcher
或者如果你有一个类的实例:
PS H:\> "$(([System.DirectoryServices.DirectorySearcher]'').GetType())"
adsisearcher
PS H:\> "$(([adsisearcher]'').GetType())"
adsisearcher
但是查看该类的属性(例如[System.DirectoryServices.DirectorySearcher] | fl),我实际上在其中的任何地方都看不到“adsisearcher”。调用 ToString() 也无济于事,因为您获得了完整的类名:
PS H:\> [System.DirectoryServices.DirectorySearcher].ToString()
System.DirectoryServices.DirectorySearcher
PS H:\> [adsisearcher].ToString()
System.DirectoryServices.DirectorySearcher
谁能解释这个"$(...)"实际上是如何解析短名称的? “返回值”从何而来?
SO 上有许多其他答案解释了如何获取类型加速器的完整列表,但我找不到任何解释这种"$(...)" 行为的答案。
【问题讨论】:
标签: powershell