У меня есть приложение ASP.NET 3.5, выполняющее сценарии Powershell для добавления/обновления почтовых ящиков Exchange. Большинство команд Powershell прекрасно работают, но пока две из них вызывали ошибку: get-calendarprocessing и set-calendarprocessing, которые получают или устанавливают пользователей, назначенных для планирования комнаты. Ошибка: System.Management.Automation.CmdletInvocationException: операция недействительна из-за текущего состояния объекта. Когда я запускаю команды из оболочки управления Exchange, они работают нормально. Мы исправили и перезагрузили сервер Exchange.
Пример команды: get-calendarprocessing Room.1 | select -expand bookinpolicy (или аналогичные варианты)
Private Function RunScript(ByVal ScriptFileName As String, ByVal Arguments() As String) As Collection(Of PSObject)
Dim sb As New StringBuilder
Dim strScript As String
' create Powershell runspace and open
If psRunspace Is Nothing Then
psRunspace = InitializeRunspace()
End If
'Grab Powershell script from text (.ps1) file
strScript = File.ReadAllText(ScriptFileName)
'inject the arguments into the script
strScript = InsertArguments(strScript, Arguments)
Logging.LogMessage(strScript)
'Open the runspace and create a pipeline if it's not already open
If psRunspace.RunspaceStateInfo.State = RunspaceState.BeforeOpen Then
psRunspace.Open()
End If
Dim MyPipeline As Pipeline = psRunspace.CreatePipeline()
MyPipeline.Commands.AddScript(strScript)
Try
Dim psResults As Collection(Of PSObject)
psResults = MyPipeline.Invoke() 'ERRORS HERE
Return psResults
Catch ex As Exception
Logging.LogMessage(ex.Message)
Throw ex
End Try
End Function