通过C#交换PowerShell命令我有一个名为initconnection的方法,它可以建立与Exchange的连接。当我单击一个按钮时,我会调用另一个方法,该方法将在建立连接后向powershell发送命令。但我无法继续创建的连接。当我尝试运行命令时,它说找不到命令。很可能是因为它没有交换cmdlet。运行空间runspace=System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace();运行空间.Open();流水线pipeline=runspace.CreatePipeline();pipeline.Commands.AddScript("Set-ExecutionPolicyUnrestricted-Scopeprocess-Force;$password=ConvertTo-SecureString-AsPlainText-Force"+password+";$mycred=new-object-typenameSystem.Management.Automation.PSCredential-argumentlist"+username+",$password;$LiveCred=Get-Credential-Credential$mycred;$Session=New-PSSession-ConfigurationNameMicrosoft.Exchange-ConnectionUrihttps://ps.outlook.com/powershell/-Credential$LiveCred-基本身份验证–AllowRedirection;Import-PSSession$Session");//pipeline.Commands.Add("Out-String");pipeline.Invoke();mpeAdd.隐藏();这是创建连接的初始化连接方法。protectedvoidGet_Mailboxes(objectsender,EventArgse){PowerShellpowershell=PowerShell.Create();PSCommand命令=newPSCommand();命令=新的PSCommand();command.AddCommand("获取邮箱");命令;powershell.Runspace=运行空间;//它还说runsapce在此上下文中不存在。集合commandResults=powershell.Invoke();StringBuildersb=newStringBuilder();ArrayListboxesarray=newArrayList();foreach(PSObjectpsincommandResults){boxesarray.Add(ps.Properties["Alias"].Value.ToString());}boxes.DataSource=boxesarray;boxes.DataBind();这是当我在创建调用的连接方法后单击按钮时,但它不起作用。您必须将Exchange管理单元添加到您的运行空间。看看开发者的交流。如果“runspace”不存在,这就解释了Get-Mailbox命令失败的原因。您可以在initConnection方法中创建一个PowerShell实例,然后在需要的地方使用它,而不是管理运行空间。请注意,这是使用本机代码显示的,而不是脚本。ps=PowerShell.Create();设置执行策略。ps.ClearCommands().AddCommand("Set-ExecutionPolicy").AddParameter("Scope","Process").AddParameter("ExecutionPolicy","Unrestricted").AddParameter("Confirm",false).AddParameter("强制",true).Invoke();创建凭据。请注意,您不需要调用Get-Credential。安全字符串传递;varcreds=newPSCredential(用户名,pass);创建并导入会话。varnewSession=ps.ClearCommands().AddCommand("New-PSSession").AddParameter("ConfigurationName","Microsoft.Exchange").AddParameter("ConnectionUri","https://ps.outlook.com/powershell/").AddParameter("凭据",creds).AddParameter("身份验证","基本").AddParameter("AllowRedirection",true).Invoke();varsession=newSession[0];varimport=ps.ClearCommands().AddCommand("Import-PSSession").AddParameter("Session",session).Invoke();ps.ClearCommands()是一个扩展方法,添加它可以与AddCommand(),AddParameter()等链接:publicstaticPowerShellClearCommands(thisPowerShellps){if(ps.Commands!=null)ps.Commands.Clear();返回ps;}在Get_Mailboxes()中使用它protectedvoidGet_Mailboxes(objectsender,EventArgse){varcommandResults=ps.ClearCommands().AddCommand("Get-Mailbox").Invoke();StringBuildersb=newStringBuilder();ArrayListboxesarray=newArrayList();foreach(PSObjectpsincommandResults){boxesarray.Add(ps.Properties["别名".Value.ToString());}boxes.DataSource=boxesarray;boxes.DataBind();}当你关闭应用程序或在适当的地方:以上就是C#学习教程:通过C#交换PowerShell命令分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——ps.ClearCommands().AddCommand("Get-PSSession").AddCommand("Remove-PSSession").Invoke();ps.Dispose();本文采集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处:
