C#을 사용하여 원격 컴퓨터에서 서비스 목록을 가져 오려고하지만 작동하지 않지만 같은 사용자로 PowerShell 스크립트를 실행할 때도 동일하게 작동합니다.아래의 powershell 코드에 대한 C# 대안은 무엇입니까?
$global:websess = New-PSSession -Computername $webserverNameList.Text -Credential $global:cred -ConfigurationName *JEAconfigname* -Authentication Negotiate
위의 코드는 원격 컴퓨터에서 서비스 목록을 가져 오는 데 동일한 domain \ username을 사용하는 PowerShell 스크립트의 코드입니다. ServiceController 클래스 및 ConnectionOption 클래스와 ManagementScope의 조합을 사용하여 C# 코드에서 동일한 작업을 시도했지만 액세스가 거부되었습니다.
ConnectionOptions connection = new ConnectionOptions();
connection.Username = "domain\username";
connection.Password = "password";
connection.Authority = "";
connection.EnablePrivileges = true;
connection.Authentication = AuthenticationLevel.PacketPrivacy;
connection.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope scope = new ManagementScope(@"\\" + lstServerNames.SelectedValue.ToString() + @"\root\cimv2");
scope.Connect(); // Fails here: System.UnauthorizedAccessException: 'Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))'
ObjectQuery query = new ObjectQuery(
"SELECT * FROM Win32_Service WHERE Name like '%Vend%'");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
foreach (ManagementObject queryObj in searcher.Get())
{
cmbServices.Add(queryObj["Name"].ToString());
}
나는이 너무 시도 :
List<ServiceController> serviceList = ServiceController.GetServices(lstServerNames.SelectedValue.ToString()).Where(x => x.ServiceName.ToLower().StartsWith("vend") || x.ServiceName.ToLower().StartsWith("vstsagent")).ToList();
// Fails here: System.InvalidOperationException: 'Cannot open Service Control Manager on computer '*server name*'. This operation might require other privileges.'
foreach (ServiceController service in serviceList)
{
cmbServices.Add(service.ServiceName);
}
나는 사용자가 현재 관리자 액세스 권한을 부여한다 알고있다. 스크립트를 실행하기 위해 Just Enough Administration (JEA) 액세스 권한을 사용하는 기존 PowerShell. https://msdn.microsoft.com/en-us/library/dn896648.aspx
[C# 내의 Microsoft Exchange PowerShell에 연결] (https://stackoverflow.com/questions/36236897/connect-to-microsoft-exchange-powershell-within-c-sharp)의 가능한 복제본입니다. 이 질문에 대한 답은 당신이하려는 일에 가깝게해야합니다. –
오류가있는 C# 앱의 예제 코드를 보여주는 것은 어떻습니까? 작동 PoSh 예제를 공유하고 PowerShell에 도움을 요청하는 것은별로 의미가 없습니다 ... – Clijsters
@Clijsters 코드 –