Привет, я работаю над программой на C # для вызова командлетов Exchange 2010 powershell в удаленном пространстве выполнения.Команда ps:
"Get-MailboxDatabase -Server EX2010SVR1 -Status | Идентификатор формата списка, Guid, смонтировано, CircularLoggingEnabled, Recovery | Out-File 'C: \ db.txt' -EncodingUTF8 -Width 8192 ".
Мой код похож на:
static int Main(string[] args)
{
const string SHELL_URI = "http://schemas.microsoft.com/powershell/Microsoft.Exchange";
const string COMMAND = "Get-MailboxDatabase -Server EX2010SVR1 -Status | Format-List Identity,Guid,mounted,CircularLoggingEnabled,Recovery | Out-File 'C:\db.txt' -Encoding UTF8 -Width 8192";
System.Uri serverUri = new Uri("http://EX2010SVR1/powershell?serializationLevel=Full");
PSCredential creds = (PSCredential)null; // Use Windows Authentication
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(serverUri, SHELL_URI, creds);
try
{
using (Runspace rs = RunspaceFactory.CreateRunspace(connectionInfo))
{
rs.Open();
PowerShell psh = PowerShell.Create();
psh.Runspace = rs;
psh.AddCommand(COMMAND);
Collection results = psh.Invoke();
rs.Close();
}
}
catch (Exception ex)
{
System.Console.WriteLine("exception: {0}", ex.ToString());
}
return 0;
}
Когда я запускаю программу c # на Win2008 R2, где размещается сервер Exchange 2010, я всегда получаю исключение:
System.Management.Automation.RemoteException: The term 'Format-List' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
at System.Management.Automation.PowerShell.CoreInvoke[TOutput](IEnumerable input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.Invoke(IEnumerable input, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.Invoke()
at RemotePS.Program.Main(String[] args)
Программа работает нормально без конвейеров "Format-List" и "Out-File".Вся команда также отлично работает в командной консоли Exchange 2010.Я также подтвердил, что в системе установлен PowerShell 2.0.
Может ли кто-нибудь помочь понять, что происходит?Любая помощь очень ценится.
Том