C#을 사용하여 Microsoft AppV에서 시작된 모든 가상 프로세스 목록을 가져 오려고합니다. C#을 사용하여 AppV 가상 프로세스 목록을 얻는 방법
나는 C#에서 PowerShell을 사용하여 시도하지만 난이 오류 :System.Management.Automation.CommandNotFoundException: 'The 'Get-AppvVirtualProcess' command was found in the module 'AppvClient', but the module could not be loaded. For more information, run 'Import-Module AppvClient'.'
이상한 것은 내가 PowerShell 명령 줄을 사용하는 경우, 그것은 잘 작동하고 가상 프로세스를 나열한다는 것입니다.
ps.Commands.AddCommand("Get-Command");
그것은 명령으로-AppvVirtualProcess을하기 나열 보여줍니다 :
그래서 C#에서 내가했던
결과 : 나는 C#에서 모듈을로드하려고
Function Get-AppvVirtualProcess 1.0.0.0 A
수동으로 사용 :
InitialSessionState initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new string[] {@"C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1" });
및
ps.Commands.AddCommand("Import-Module").AddArgument("AppvClient");
하지만 여전히 위에서 언급 한 것과 같은 오류가 발생합니다. 나뿐만 아니라이 시도 대신에 실행 영역의
public static void powershellCommand()
{
Collection<PSObject> result;
using (Runspace myRunSpace = RunspaceFactory.CreateRunspace())
{
InitialSessionState initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new string[] {@"C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1" });
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.Commands.AddCommand("Import-Module").AddArgument("AppvClient");
ps.Commands.AddCommand("Get-AppvVirtualProcess");
result = ps.Invoke();
var builder = new StringBuilder();
foreach (PSObject psObject in result)
{
builder.Append(psObject.ToString() + "\n");
builder.ToString();
}
Console.WriteLine("Virtual Process: {0}", builder.ToString());
}
}
을하지만 난 같은 오류 얻을 :
는 C#에서 코드는 다음과 같습니다
public static void p()
{
using (var powershell = PowerShell.Create())
{
powershell.AddCommand("Get-AppvVirtualProcess");
powershell.Invoke();
}
}
이 DLL에 대한 프로세스 탐색기에서 검색 수동 및 programattic 없습니다. 정확한 결과를 얻기위한 최선의 방법은 아닙니다. 패치 작업과 비슷합니다. 하지만 팁 주셔서 감사합니다! – Amir