Ну, по сути, PowerShell не является браузером COM-объектов. COM-объекты загружаются только при их создании и вызове.
PowerShell основан на. Net, а. Net является частью операционной системы и загружается при запуске ОС. По этой причине вы получаете пространства имен. Net в IntelliSense в PowerShell без дополнительной работы. Хотя даже с этим нужно правильно его назвать. Например,
[System.Net.Dns]::
… или если вы хотите, если вам не нужно что-либо печатать, вы можете поместить это…
Using Namespace System.Net
в самый верх вашего профиля / ваш сценарий или первое, что вы добавите в интерактивную сессию, тогда вы можете просто
[Dns]::
Об использовании Это позволяет вам указать, какие пространства имен используются в сеанс.
COM не будет доступен для вас таким образом. Что касается вашего указателя кода C ++. Вы можете использовать внешние сегменты кода / блоки / функции в PowerShell, чтобы дополнить то, что вы, возможно, пытаетесь сделать, и для этого используется командлет Add-type .
Примеры ---
Использование кода CSharp (C#) в скриптах Powershell
Как отмечено онлайн:
из PS запустите help add-type -full и найдите пример F # (пример 7 в моей системе). Предполагая, что у вас есть компилятор C ++, который следует модели «CodeDom», вы можете отразить пример F #.
Кроме того, PowerShell может вызывать неуправляемый код с помощью P / Invoke (это концепция. NET). ), поиск в Интернете вариантов использования.
Итак, основываясь даже на том, что вы показываете, вы говорите за пределами этого?
$wscAPI = New-Object -ComObject wscAPI.WSCProductList.1
$wscAPI.CreateObjRef(
... Итак, вы хотите быть в состоянии сказать, что IntelliSense / табуляция завершены, когда вы начинаете вводить
New-Object -ComObject #[tab if on the command line or IntelliSense popup in an editor]
Тем не менее, существуют модули / скрипты и т. д. c. через Microsoft powershellgallery.com продемонстрируйте, как вы можете написать свой собственный объектный браузер. См. Ресурсы ниже:
Браузер объектов PowerShell
Это приложение PowerShell, которое отображает объекты в приложении типа проводника, написанном в PowerShell. В обозревателе объектов PowerShell отображаются свойства и дочерние объекты / коллекции для любого объекта платформы PowerShell /. Net. Для объяснения того, как использовать это
Загрузить: PSObjectBrowser.ps1
Существует несколько WMI, CIM,. Net примеров / инструментов, которые показывают, как сделать просмотр объекта, но опять же, что. Net. Просто ищи их. Например:
Браузер объектов PowerShell
Это приложение PowerShell, которое отображает объекты в приложении типа проводника, написанном в PowerShell. Браузер объектов PowerShell отображает свойства и дочерние объекты / коллекции для любого объекта каркаса PowerShell /. Net. Для объяснения того, как использовать это
Загрузить: PSObjectBrowser.ps1
Сценарий выходного дня: WMI Explorer Tool
Сценарий выходного дня: Объявление WMI Explorer 2.0
Надстройка PowerShell ISE - CIM Explorer
Надстройка PowerShell ISE для навигации по CIM (WMI) ) пространства имен / определения и создание примеров сценариев PowerShell с помощью командлетов CIM
Бесплатный WMI Explorer, WMI Tools & Powershell GUI Builder
Coretech WMI и PowerShell Browser
· Мощный инструмент WMI, позволяющий подключаться и работать с WMI локально и удаленно. С помощью этого инструмента вы можете просматривать пространства имен WMI, классы, методы, свойства и экземпляры классов. Помимо того, что это браузер WMI, Coretech WMI и PowerShell Explorer позволяют также экспортировать результаты запросов и методы пространств имен.
Они могут дать вам идеи относительно того, как вы можете создать такой для COM. Тем не менее, вам нужно знать все возможные классы COM (зарегистрированные или нет), которые вы хотите создать. Таким образом, вы можете сделать что-то вроде этого, чтобы найти их ...
Get-ChildItem -Path 'HKLM:\Software\Classes' -ErrorAction SilentlyContinue |
Where-Object {$PSItem.PSChildName -match '^\w+\.\w+$' -and
(Get-ItemProperty "$($PSItem.PSPath)\CLSID" -ErrorAction SilentlyContinue)} |
Format-Table PSChildName -AutoSize
# Results
<#
Sample output from the COM lookup.
PSChildName
-----------
...
Access.Application
...
AcroPDF.PDF
...
AudioVBScript.1
...
CDO.Message
...
Cmiv2.CmiFactory
...
Excel.Application
...
InternetExplorer.Application
...
Outlook.Application
...
Paint.Picture
...
#>
Можно, конечно, изменить регулярное выражение, чтобы найти любую строку (ы), которую они выбирают. Для получения подробных инструкций по использованию регулярных выражений см. Ресурс "Регулярные выражения".
RegExLib.com Шпаргалка регулярных выражений (. NET)
Regular -Expressions.Info Tutorials
Итак, с этим блоком, скажем, это усилие ...
New-Object -ComObject #[tab if on the command line or IntelliSense popup in an editor]
... до тех пор, пока вы загружаете это при запуске, и дать им заполненное имя переменной, это был бы быстрый и грязный способ сделать это. Я делал подобные вещи не только для этого, но и для классов. Net ...
Function Get-AllCimClassesAsVariables
{
# Set variables for CimClasses
ForEach($Item in ((Get-CimClass -ClassName *).CimClassName))
{Set-Variable -Name $Item -Value $Item}
}
Обратите внимание:
Я больше не использую этот подход, потому что он громоздок, имеет большую загрузочную загрузку, потому что ему придется заполнять этот список при каждом сеансе PowerShell.
У меня есть полная Visual Studio на моей рабочей станции (можно также использовать платную или бесплатную версию ), поэтому я использую ее для разработки PowerShell, а также для ссылок и просмотра COM ресурсы.
До этого я использовал OleView.exe из Windows / MSOffice SDK . Был также набор Windows ресурсов, которые можно было бесплатно скачать. У меня все еще есть это в облачном расположении для моего легкого доступа, прикрепленное к моей панели задач, когда мне просто нужно это против раскручивания Visual Studio или когда я нахожусь в месте, где у меня нет Visual Studio под рукой.
Чтобы сделать то, что вам нужно, было бы разумно просто использовать OleVIew.exe как часть вашего набора инструментов PowerShell для поиска и использования информации COM, найти те, которые вы будете регулярно использовать, и поместить их в модуль, который вы регулярно загружаете через свой профиль, или вам нужно будет собрать все, что вам нужно для просмотра, аналогично тому, что показано для инструментов WMI / CIM /.Net выше.