2015-07-25 26 views
5

Sto creando un'applicazione che interrompe il sito Web predefinito di IIS. Ho usato uno script PowerShell per fermare il sito Web perché questo script è eseguito dal mio sito web.Recupero della classe di produzione COM per componente con CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} non riuscito

Questo è il mio script:

Import-Module C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration 
Stop-Website 'Default Web Site' 
my copy code 
Start-Website 'Default Web Site' 

E questo è il mio codice C#:

PowerShell _PowerShell = PowerShell.Create(); 

Runspace rs = RunspaceFactory.CreateRunspace(); 
rs.Open(); 

_PowerShell.Runspace = rs; 
_PowerShell.AddScript(@"Set-ExecutionPolicy RemoteSigned -scope LocalMachine").Invoke(); 
_PowerShell.AddScript(@"E:\DE.TEST\Power_Shell\Scripts\StopIISDefaultSite.ps1").Invoke(); 

if (_PowerShell.HadErrors) 
{ 
    Collection<ErrorRecord> errors = _PowerShell.Streams.Error.ReadAll(); 

    foreach (var item in errors) 
    { 
     Console.WriteLine(item.ToString()); 
    } 
} 

Console.ReadLine(); 

mostra il seguente errore

Retrieving the COM class factory for component with CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

+0

Sto usando qualsiasi CPU. Io non sono un master in powershell :( –

+0

lo cambio in x86, si verifica ancora errore: –

+0

chiaramente qualcosa non è registrato su quella macchina (cioè componente COM che deve registrarsi affinché il codice venga eseguito contro di esso) –

risposta

6

È necessario verificare se l'istanza di PowerShell stai eseguendo il tuo codice PS sotto 32-bit o 64-bit e fai la tua soluzione per costruire quella piattaforma di destinazione. È possibile controllare questo utilizzando:

if([IntPtr]::size -eq 8) { Write-Host 'x64' } else { Write-Host 'x86' } 

Source

Come sottolineato nella commenti setion, se si esegue PowerShell a 64-bit, costruire la vostra soluzione per AnyCPU e deselezionando "Preferisco a 32 bit" risolve il problema.

+1

Costruire per qualsiasi CPU con "Prefer 32-bit" deselezionato sembra funzionare per me (ma ho solo provato su una macchina a 64 bit). –