Powershell New-WebApplication
[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
New-WebApplication -Name 'testApp' -Site 'Default Web Site' -PhysicalPath c:\test -ApplicationPool DefaultAppPool
Это содержимое test.ps1.
Когда я запустил. \Test.ps1, я получаю следующую ошибку.
New-WebApplication: невозможно получить динамические параметры для Командлет. Получение COM-класса factory для компонента с CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} не удалось из-за следующего Ошибка: 80040154. В C:\code\work\users\mchevett\test.ps1: 6 char: 19 + New-WebApplication < -Name 'testApp' -Site 'Default Web Site' -PhysicalPath c:\test -ApplicationPool DefaultAppPo ol + CategoryInfo: InvalidArgument: (:) [New-WebApplication], ParameterBindingException + FullyQualifiedErrorId: GetDynamicParametersException, Microsoft.IIs.PowerShell.Provider.NewWebApplicationCommand
Это сообщение об ошибке не помогает мне вообще. Любые идеи, как получить лучшее сообщение об ошибке? Спасибо за чтение!
Ответы
Ответ 1
У меня была такая же проблема, потому что я вызывал неправильную версию PowerShell из моей программы. Я не уверен в этом, но я думаю, что когда у вас есть программа x86, она вызывает версию PowerShell x86, которая терпит неудачу.
Чтобы специально использовать 32-разрядную версию, вызовите это из своей программы:
C:\Windows\SysWoW64\WindowsPowerShell\v1.0\powershell.exe
Чтобы использовать 64-разрядную версию (в 64-разрядной ОС), вызовите ее из вашей программы:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Используя C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe
из 32-битного процесса, вы получите 64-битную оболочку. Использование этого метода из 64-битного процесса даст вам ошибку, не найденную в файле.
Ответ 2
Изменение целевого объекта платформы на "x64" в свойствах сборки решения проекта сработало для меня:
![screenshot of configuration page]()