access. NET инструменты фреймворка от powershell - PullRequest
0 голосов
/ 20 января 2020

Как получить доступ к нескольким. NET инструментам фреймворка из powershell? Инструменты перечислены в следующей ссылке: https://docs.microsoft.com/en-us/dotnet/framework/tools/.

Я узнал, что инструменты расположены по следующему пути:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools

Как запустить скрипт, чтобы мы могли сделать следующее:

  1. Определите, установлены ли. NET инструменты инфраструктуры.

2. Установите его, если он не установлен, и извлеките установленный путь.

Go к пути и использованию инструментов для дальнейшего использования.

Сегодня сценарий powershell сформулирован таким образом, что взаимодействие с пользователем требует указания на один из. NET каркасные инструменты, например CorFlags.exe. Идея состоит в том, чтобы удалить это взаимодействие и найти файл с помощью сценария powershell, если. NET Framework Framework уже установлены, или сначала установите его, а затем найдите его.

$CorFlagsExe = (Find-FileDialog -Title "Select CorFlags.exe." -InitialDirectory "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools" -ExtensionFilter "CorFlags.exe")


foreach($f in $Files)
{
  & $CorFlagsExe $f.FullName /32BITREQ- /nologo
}

Ответы [ 3 ]

0 голосов
/ 20 января 2020

Это то, для чего нужен Add-Type cmldet.

Add-Type был добавлен в PowerShell 2.0, поэтому до этого метод Assembly :: Load был единственным способом добавить сборки в ваше пространство имен. Начиная с PowerShell 3x и выше, он улучшен.

Добавьте тип. NET Framework к сеансу PowerShell. Если класс. NET Framework добавлен в сеанс PowerShell с помощью Add-Type, эти объекты могут быть созданы (с помощью New-Object), как и любой другой объект. NET Framework.

Add-Type -AssemblyName accessib* -PassThru

Что касается того, используете ли вы Add-Type из того, что выделил 'Nova Sys Eng', ниже есть хорошая статья на эту тему c.

Add-Type против [ Reflection.assembly] в PowerShell

0 голосов
/ 21 января 2020

Есть также недокументированная команда «использование сборки» (хотя в ps 6 и выше вы должны указать путь к dll, потому что больше нет GA C).

using assembly System.Windows.Forms
using namespace System.Windows.Forms
[messagebox]::show('hello world')
0 голосов
/ 20 января 2020

Базовый c подход довольно прост

Загрузите желаемую DLL. Используя itext dll для этого примера. В вашем случае вам нужно определить, какой dll netfx имеет класс netfx, который вам нужен, чтобы делать то, что вы хотите делать

[Reflection.Assembly]::LoadFile(:C:\foo\itext.kernel.dll") | out-null

Пример: создание экземпляра объекта itext PdfWriter. Для ctor требуется полное имя файла PDF. В вашем случае, когда вы знаете, какой класс netfx вам нужен, вам нужно найти документацию по классу и определить, какой ctor вам нужен для объекта, для которого вы хотите создать экземпляр

[itext.kernel.pdf.PdfWriter]$pdfWriter = New-Object itext.kernel.pdf.PdfWriter("fully qualified pdf file name")

Пример с использованием метода объекта. В вашем случае изучите документы класса, чтобы узнать, какие методы и свойства вам нужно использовать, чтобы делать то, что вы хотите делать

$pdfWriter.close()

Это тривиальный пример, но он должен заставить вас идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...