我想使用c#language在远程机器上执行一些Active目录查询。它是查询
PowerShell ps = PowerShell.Create();;
ps.AddScript(@"$Session = New-PSsession -Computername com1");
ps.AddScript(@"Invoke-Command -Command {Import-Module ActiveDirectory} -Session $Session");
ps.Invoke();
我想在第一次执行后跳过上面的命令执行,并且应该保持会话直到程序退出。请帮我执行更多脚本并建立相同的会话。
确切地说,我想在整个程序中只创建一次会话。谢谢
答案 0 :(得分:0)
最后,我得到了我的问题的解决方案..非常简单。
将Powershell对象设为静态变量,并在脚本调用函数后清除该命令。
ps.commands.clear();
现在,在不影响当前会话的情况下,我们可以轻松地执行查询。让我知道是否有任何其他有效的方法。
感谢。
答案 1 :(得分:0)
int iRemotePort = 5985;
string strShellURI = @"http://schemas.microsoft.com/powershell/Microsoft.PowerShell";
string strAppName = @"/wsman";
AuthenticationMechanism auth = AuthenticationMechanism.Negotiate;
WSManConnectionInfo ci = new WSManConnectionInfo(
false,
sRemote,
iRemotePort,
strAppName,
strShellURI,
creds);
ci.AuthenticationMechanism = auth;
Runspace runspace = RunspaceFactory.CreateRunspace(ci);
runspace.Open();
PowerShell psh = PowerShell.Create();
psh.Runspace = runspace;
将Powershell对象作为类中的静态变量。