0

我想使用 c# 语言在远程机器上执行一些活动目录查询。这是查询

  PowerShell ps = PowerShell.Create();;

 ps.AddScript(@"$Session = New-PSsession -Computername com1");
 ps.AddScript(@"Invoke-Command -Command {Import-Module ActiveDirectory} -Session $Session");
 ps.Invoke();

我想在第一次执行后跳过上述命令执行,并且应该保持会话直到程序退出。请帮助我在建立相同会话的情况下执行更多脚本。

确切地说,我只想在整个程序中创建一次会话。谢谢

4

2 回答 2

1

最后我得到了我的问题的解决方案..它非常简单。

将 Powershell 对象设为静态变量,并在脚本调用函数后清除命令。

ps.commands.clear();

现在在不影响当前会话的情况下,我们可以轻松地执行查询。如果有其他有效的方法,请告诉我。

谢谢。

于 2013-06-03T10:47:47.117 回答
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 对象作为类中的静态变量。

于 2013-06-04T18:26:44.900 回答