ik probeer het één en ander om te zetten van vbscript naar c#, hierbij loopt het alleen stuk op het moment dat ik de collection in c# wil aanspreken.
hierbij eerst de vbscript code:
Nu heb ik dit tot zover omgezet in c# in het volgende:
De c# versie loopt stuk op de foreach loop. Ook als ik deze vervang voor een simpele: Console.WriteLine(result.Count); Krijg ik een exception op de Count (exception: Generic Failure). Wanneer ik check voor het type van "result" krijg ik daarvoor wel netjes System.Management.ManagementObjectCollection op terug.
Het vbscript overigens, geeft wel netjes de gewenste data terug.
En wanneer ik op inet zoek naar de methode (die ik gebruik) om WMI aan te spreken, heb ik hier (dacht ik) geen fouten in gemaakt. Wat betreft die Impersonate, wanneer ik deze weglaat, heeft dit geen ander resultaat
Kan iemand mij vertellen, wat ik in de c# code fout doe?
// edit, sorry voor de topic name...
hierbij eerst de vbscript code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| Function GetServiceStatus
Dim objServices, objStatus
Set objServices = GetObject("winmgmts:{impersonationLevel=Impersonate}!\root\hewlettpackard\openview\data")
Set objStatus = objServices.Get("OV_ElementState.ElementPath=""OV_Service.Name=\""" & strSID & "\""""")
If objStatus.Severity = "32" Then
strStatus = "down"
Else
strStatus = "up"
End If
set objStatus = nothing
set objServices = nothing
End Function |
Nu heb ik dit tot zover omgezet in c# in het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| ManagementScope oMs = new ManagementScope("\\\\.\\root\\HewlettPackard\\OpenView\\Data");
oMs.Options.EnablePrivileges = true;
oMs.Options.Impersonation = ImpersonationLevel.Impersonate;
ObjectQuery oQuery = new ObjectQuery("select * from OV_ElementState where ElementPath = 'viewname'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(oMs,oQuery);
ManagementObjectCollection result = searcher.Get();
foreach(ManagementObject oReturn in result)
{
Console.WriteLine("bla...");
} |
De c# versie loopt stuk op de foreach loop. Ook als ik deze vervang voor een simpele: Console.WriteLine(result.Count); Krijg ik een exception op de Count (exception: Generic Failure). Wanneer ik check voor het type van "result" krijg ik daarvoor wel netjes System.Management.ManagementObjectCollection op terug.
Het vbscript overigens, geeft wel netjes de gewenste data terug.
En wanneer ik op inet zoek naar de methode (die ik gebruik) om WMI aan te spreken, heb ik hier (dacht ik) geen fouten in gemaakt. Wat betreft die Impersonate, wanneer ik deze weglaat, heeft dit geen ander resultaat
Kan iemand mij vertellen, wat ik in de c# code fout doe?
// edit, sorry voor de topic name...
[ Voor 8% gewijzigd door Verwijderd op 17-12-2004 12:47 . Reden: code tags toegevoegd ]