В моей системе есть сценарии Powershell, для которых требуется как минимум Powershell v4. У меня PowerShell v5, я могу запускать эти скрипты с помощью консоли Powershell.
Но я хочу вызвать эти сценарии из C# -Visual Studio 2008 (.net 3.5). Я ограничен в использовании Visual Studio 2008. Я указал System.Management.Automation в своем решении из пути
"C: \ WINDOWS \ assembly \ GAC_MSIL \ System.Management.Automation \ 1.0.0.0__31bf3856ad364e35 \ System.Management.Automation.dll" Но это поддерживает только Powershell v2.
Я загрузил последнюю версию System.Management.Automation.dll из NuGet, и мое решение не распознает ее. Возможно ли этого добиться?





Что ж, прошли годы с тех пор, как я даже не видел кого-нибудь с Visual Studio 2008. ; -}
Однако на самом деле это не вопрос о нерабочем коде PowerShell (который мы здесь, чтобы помочь), а вопрос о среде / операционной конфигурации Visual Studio, чтобы вообще запустить PowerShell.
Visual Studio привязана к версии .Net при ее выпуске, как и PowerShell.
Требования Microsoft .NET Framework
Windows PowerShell 5.1 требует полной установки Microsoft .NET Framework 4.5. Windows 8.1 и Windows Server 2012 R2 по умолчанию включают Microsoft .NET Framework 4.5.
Windows PowerShell 5.0 требует полной установки Microsoft .NET Framework 4.5. Windows 8.1 и Windows Server 2012 R2 по умолчанию включают Microsoft .NET Framework 4.5.
Windows PowerShell 4.0 требует полной установки Microsoft .NET Framework 4.5. Windows 8.1 и Windows Server 2012 R2 по умолчанию включают Microsoft .NET Framework 4.5. …
Конечно, поскольку вы говорите, что уже использовали PowerShell v5 в своей системе, значит, у вас есть необходимые DLL-библиотеки .Net, и вам не нужно было загружать DLL-файлы, которые вы делали отдельно. Наконец, каждый из этих System.Management.Automation.dll расположен / зарегистрирован в своих собственных папках.
C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35 C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35 C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~17763.134.1.4\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0\f C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~17763.134.1.4\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0\r C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~17763.194.1.5\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0\f C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~17763.194.1.5\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0\r C:\Windows\WinSxS\msil_system.management.automation_31bf3856ad364e35_1.0.0.0_none_6340379543bd8a03 C:\Windows\WinSxS\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0 C:\Windows\WinSxS\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0\f C:\Windows\WinSxS\msil_system.management.automation_31bf3856ad364e35_10.0.17763.134_none_3a18c3b5ad9702a0\r C:\Windows\WinSxS\msil_system.management.automation_31bf3856ad364e35_10.0.17763.1_none_b60c54e2801db2ff
Вы также не говорите и не показываете, как вы пытались зарегистрировать эту .dll, чтобы Visual Studio 2008 ее увидела. Итак, похоже, это специфическое ограничение Visual Studio 2008, и ваш единственный вариант - независимо выполнить оболочку PowerShell.exe, как и cmd.exe, для запуска ваших файлов .ps1.
Вы уже видели / пробовали следующие подходы / детали?
Шаблоны PowerShell Visual Studio 2008
Visual Studio 2008 project and item templates for Windows PowerShell including Cmdlet,
Вызов сценария PowerShell из вашего .NET-кода
An article on embedding and/or launching PowerShell scripts from a C# program.
Используйте VSCmdShell для запуска сценария PowerShell из Visual Studio 2008