Я пытаюсь вызвать файл сценария powershell на удаленном сервере, который в основном получает параметр и создает общий диск с использованием этого параметра. Учетные все правильно, но всякий раз, когда я запускаю это, он возвращает эту ошибку:вызов сценария remote powershell с разными учетными данными в C#
When the runspace is set to use the current thread the apartment state in the invocation settings must match that of the current thread
Это что-то делать с учетными данными, как когда я извлекал удостоверение, он прекрасно работает на моей локальной машине. Может ли кто-нибудь пролить свет на это? Спасибо,
Ниже мой C# сценарий:
PSCredential credential = new PSCredential(_exchangeUsername, password);
// Set exchange connection details
WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(_exchangeConnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default;
string cmdArg = @"\\servername\\c$\\scripts\\HomeDrive.ps1 "+userID;
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
try
{
runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
runspace.ApartmentState = System.Threading.ApartmentState.STA;
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(cmdArg);
pipeline.Commands[0].MergeMyResults(PipelineResultTypes.Error, PipelineResultTypes.Output);
Collection<PSObject> results = pipeline.Invoke();
var error = pipeline.Error.ReadToEnd();
// Check for powershell command errors
if (error.Count > 0)
{
throw new Exception(errorMessage.ToString());
}
// Check for powershell command results
if (results.Count <= 0)
{
throw new Exception(String.Format("Error. No results after command invoked.", userID));
}
runspace.Close();
}
catch (Exception ex)
{
runspace.Close();
throw new ApplicationException(String.Format("Error ", userID), ex);
}
}
Он не любит 'runspace.ApartmentState = System. Threading.ApartmentState.STA', поскольку текущий поток не является потоком STA. Вам нужно либо удалить эту строку, либо удалить строку над ней ... –
Если я удаляю одну из строк, она выдает ошибку «Метод определения не поддерживается» – user2360891
Какой метод говорит, что он не поддерживается? –