2011-11-24 12 views
6

Ho uno script PowerShell che è memorizzato in una stringa chiamata "script" con il contenuto:Come aggiungere Powershell Snap-in C#

get-user | out-file C:\Users\user\Desktop\user.txt -append 

mio C# Codice:

RunspaceConfiguration runConfig = RunspaceConfiguration.Create(); 
       PSSnapInException psEx = null; 
       runConfig.AddPSSnapIn("VMWare.View.Broker", out psEx); 
       Runspace runspace = RunspaceFactory.CreateRunspace(runConfig); 
       runspace.Open(); 
       Pipeline pipeline = runspace.CreatePipeline(); 
       pipeline.Commands.AddScript(script); 
       Collection<PSObject> results = new Collection<PSObject>(); 
       results = pipeline.Invoke(); 
       runspace.Close(); 

Se il debug il codice ottengo la seguente eccezione:

No snap-ins have been registered for Windows Powershell Version 2 

Se faccio funzionare lo scritto manualmente e aggiungere lo snap-in funziona benissimo

+0

Mi viene restituito un 'Impossibile caricare snap-in di Windows PowerShell Microsoft.Exchange.Management.PowerShell.E2010 a causa del seguente errore: L'inizializzatore di tipo 'Microsoft.Exchange.Data.Directory.Globals' ha generato un'eccezione. "Qualcuno l'ha incontrato? – BRogers

+0

Fai una nuova domanda, @BRogers: questo non è il posto giusto. – x0n

risposta

5

Questo messaggio di errore significa anche che si sta tentando di caricare uno snapshot a 32 bit da un'istanza di PowerShell a 64 bit (o viceversa). Nel tuo caso, è necessario compilare il programma per indirizzare il corretto bitness: x86. AnyCPU imposterà automaticamente il testimone della tua macchina, che è a 64 bit.

+0

Quando lo passo a x86 ottengo 'Impossibile caricare file o assembly 'MyProject' o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato. 'usando VS2010. Eventuali suggerimenti? – BRogers

1

Ho avuto un problema simile ... Stavo cercando di eseguire un cmdlet PowerShell personalizzato da un'applicazione console. Ho verificato che la mia console è impostata su 4.0 framework e il powershell era 3.0. Si è scoperto che il problema era l'impostazione "Preferisci 32 bit" nella scheda bild della console impostata su true. Ho deselezionato e tutto ha funzionato!

Problemi correlati