2012-10-31 3 views
1

J'utilise mgmtclassgen.exe et récupère la classe wrapper (DataFile.cs) pour la classe wmi CIM_DataFile. Le code ci-dessous fonctionne parfaitement sur localhost (sans remplir de credentionals), mais quand je me connecte à la variable machine distante returnResult = 9 (objet invalide). Mais la taille de dataFileCollection variable = 1wmi C#. copie le fichier de la machine distante

var _connectionOptions = new ConnectionOptions(); 
       _connectionOptions.Username = "username"; 
       _connectionOptions.Password = "password"; 
       _connectionOptions.Authority = String.Format("ntlmdomain:{0}", "DOMAIN"); 
var _managementScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", 
"RemotePCName"), _connectionOptions); 
    var dataFileCollection = DataFile.GetInstances(_managementScope, 
        @"Name = 'C:\\Windows\\System32\\mapisvc.inf'"; 
       var tempFilePath = "c:\\temp.txt"); 
       if (dataFileCollection.Count > 0) 
       { 
        foreach (var dataFile in dataFileCollection.Cast<DataFile>()) 
        { 
         var returnResult = dataFile.Copy(tempFilePath); 
         if (File.Exists(tempFilePath)) 
         { 
          List<string> lines = File.ReadAllLines(tempFilePath).ToList(); 
          File.Delete(tempFilePath); 
         } 
        } 
       } 

Répondre

2

essayez d'ajuster votre champ de gestion différemment Peut-être que vous pourriez essayer comme:

ManagementObjectSearcher searcher = 
        new ManagementObjectSearcher(
         "\\\\" + strComputer + "\\root\\CIMV2", 
         "SELECT * FROM Win32_PerfFormattedData_MSSQLSERVER_SQLServerDatabases"); 

où strComputer est le nom de l'ordinateur distant et Win32_Perf ... la classe que vous essayez d'interroger. Cela fonctionne pour moi, comme il est dans un réseau local, même si je ne suis pas certain où se trouve votre machine distante.

Vous pouvez aussi aller http://www.microsoft.com/en-us/download/details.aspx?id=8572 qui est un générateur de requêtes WMI par Microsoft. Cela vous permet de générer des requêtes dans les scripts C#, VB et VB. Lors de la définition des propriétés de connexion. Cela pourrait valoir la peine.

Questions connexes