2011-07-28 6 views
28
[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") 

New-WebApplication -Name 'testApp' -Site 'Default Web Site' -PhysicalPath c:\test -ApplicationPool DefaultAppPool 

Ese es el contenido de test.ps1. Cuando ejecuto. \ Test.ps1 aparece el siguiente error.Powershell New-WebApplication

New-WebApplication : Cannot retrieve the dynamic parameters for the cmdlet. Retrieving the COM class factory for compon ent with CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} failed due to the following error: 80040154. At 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

Este mensaje de error no me está ayudando en absoluto. ¿Alguna idea de cómo obtener un mejor mensaje de error? ¡Gracias por leer!

+0

¿alguna solución final al respecto? – Kiquenet

Respuesta

41

Tuve exactamente el mismo problema porque estaba llamando la versión incorrecta de PowerShell de mi programa. No estoy seguro de esto, pero creo que cuando tienes un programa x86 llama a la versión x86 de PowerShell, que falla.

Para usar específicamente la versión 32 bits, llamar a éste de su programa:

C:\Windows\SysWoW64\WindowsPowerShell\v1.0\powershell.exe 

Para utilizar la versión de 64 bits (en un sistema operativo de 64 bits), llamar a éste de su programa:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 

Usando C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe desde dentro de un proceso de 32 bits le dará la PowerShell de 64 bits. Usarlo desde dentro de un proceso de 64 bits le dará un error de archivo no encontrado.

+1

Ejecuté el x86 y resolvió mi problema - C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ –

+3

En los sistemas operativos x64 'System32' no es realmente para componentes de 32 bits,' SysWOW64' es. Esa ruta 'SysNative' señalada en la respuesta estaría disponible para el proceso de 32 bits en el sistema de 64 bits y le permitiría invocar el PowerShell de 64 bits. – Mike

+0

Te recomiendo que uses "% SystemRoot% \ SysWoW64 \ WindowsPowerShell \ v1.0 \ powershell.exe" para ejecutar la versión de 64 bits de PowerShell. –