일부 웹 페이지 코드에서 전원 셸 세션이 실행되는 runspace를 만들고 싶습니다. 사용자가 페이지를 열어서 열려있을 때이 실행 공간을 만들길 원합니다. 그것이 닫힐 때까지. 예를 들어 아래의 코드는 버튼 하나 클릭에 대한 것입니다. 하지만 파워 쉘 명령을 실행할 때마다 내가이 (가).net (C#)의 영구 실행 영역
"$S = new-pssesession -configurationname micros......"
이 몇 초 정도 걸립니다 내가 어떤에서 호출 할 수 있도록 그냥이 실행 영역 및 PowerShell은 개체를 만들 수 있습니다 세션을 설정하는 것입니다 실행해야 코드를 사용할 때마다 그것을 다시 만들어야하는 코드가있는 곳입니다. 콘솔 응용 프로그램에서 응용 프로그램이 서로 다른 구조를 가지고/I는 "기본"클래스에서 삐죽 것입니다,하지만 웹 페이지를 보인다
protected void Button1_Click(object sender, EventArgs e)
{
var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
var powershell = PowerShell.Create();
//{
powershell.Runspace = runspace;
powershell.AddScript("Set-ExecutionPolicy Unrestricted ; $s=new-pssession -configurationname microsoft.exchange -connectionuri http://server.com/powershell -authentication kerberos ; import-pssession $s");
powershell.Invoke();
powershell.AddScript("get-dynamicdistributiongroup");
Collection<PSObject> resultsL = powershell.Invoke();
// close the runspace
runspace.Close();
Input.Items.Clear();
foreach (var dlist in resultsL)
{
Input.Items.Add(dlist.ToString());
}
Input.DataBind();
그래서 내가 만들려고 것이라고 생각 MY 제안 된 솔루션 정적 인 객체를 호출하면 호출 할 수 있습니다. 나는 정적 호출을 생성함으로써 처음으로 "static powers()"구조를 실행할 것이라고 생각했지만, 이후의 호출은 메소드의 코드 섹션만을 호출 할 것이라고 생각했습니다. 그러나 나는 그것이 아주 아주 맞다는 것을 확신하지 못한다.
public static class powers
{
static public Runspace runspace = RunspaceFactory.CreateRunspace();
static public PowerShell powershell = PowerShell.Create();
static powers()
{
runspace.Open();
powershell.Runspace = runspace;
powershell.AddScript("Set-ExecutionPolicy Unrestricted ; $s=new-pssession -configurationname microsoft.exchange -connectionuri http://exchangeserver.com/powershell -authentication kerberos ; import-pssession $s");
var resultL = powershell.Invoke();
}
static public Collection<PSObject> glist()
{
powershell.AddScript("get-dynamicdistributiongroup");
Collection<PSObject> resultL = powershell.Invoke();
return resultL;
}
static public Collection<PSObject> gmembers(string listn)
{
string GetMembers = "$FTE = Get-DynamicDistributionGroup '" + listn + "'";
powershell.AddScript(GetMembers);
powershell.Invoke();
powershell.AddScript("Get-Recipient -RecipientPreviewFilter $FTE.RecipientFilter");
Collection<PSObject> resultM = powershell.Invoke();
return resultM;
}
}
나는 클래스와 비슷한 것을하려고 시도하고 있었지만 아직 확실하지는 않다. 건배 – DevilWAH
내가 이것을 시도하면 "이름 세션"이 현재 상황에 존재하지 않는다 "내가 뭘 잘못하고 있는지에 대한 어떤 조언이 있나? – DevilWAH
정렬 됨, 그냥 LOL을 만드는 모든 일은 위대한 일을 잘한다. – DevilWAH