【问题标题】:Delete file on Remote Server Using WMI使用 WMI 删除远程服务器上的文件
【发布时间】:2015-03-11 22:10:52
【问题描述】:

我正在尝试使用 WMI 删除远程服务器上的现有文件。

这是我的代码:

string name = @"\\servername\\OCROut\\basketball.txt";

ConnectionOptions options = new ConnectionOptions(remoteServer, "username", "password", "ntlmdomain:domainName", ImpersonationLevel.Impersonate, AuthenticationLevel.Default, true, null, System.TimeSpan.MaxValue);

                            ManagementScope scope = new ManagementScope("\\\\server\\root\\cimv2", options);
                            scope.Connect();
                            var query = new ObjectQuery(string.Format("SELECT * FROM CIM_Datafile WHERE Drive = 'D' AND Name = '{0}' AND Filename = 'basketball' and Extension = 'txt'", name));
                            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                            var tobeDeleted = searcher.Get();

                            foreach (ManagementObject item in searcher.Get())
                            {
                                item.InvokeMethod("Delete", null);
                            }

查询是工作文件,但是当我执行 searcher.Get() 方法时我的计数 = 0。我尝试了一切,不同的斜杠,没有驱动器、文件名和扩展名,但似乎没有任何工作,我知道该文件存在。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# wmi wmi-query


    【解决方案1】:

    您似乎在参数中传递了错误的值。 Name 属性必须包含文件的完整本地路径,所以试试这个:

    string name = @"D:\\OCROut\\basketball.txt";
    var query = new ObjectQuery(string.Format("SELECT * FROM CIM_Datafile WHERE Name = '{0}'", name));
    

    【讨论】:

    • 非常感谢 RRUZ...确实有效...我猜使用整个服务器名称会造成一些问题...谢谢 adain buddy。
    • 如何接受?我正在尝试单击向上箭头,它说我需要 15 名声望?请让我知道如何,我会非常乐意接受...谢谢
    【解决方案2】:

    用于删除远程服务器中的单个/多个文件的 WMI 脚本

    #用于单个文件

    $file = Get-WmiObject -Query "Select * from CIM_Datafile Where Name='c:\\Desktop\\a.txt'" -ComputerName 10.14.34.81 -Credential administrator
    if($file)
    {
         $file.delete()|out-null
    }
    

    #对于一个目录中的多个文件

    $files =  Get-WmiObject -Query "ASSOCIATORS OF {Win32_Directory.Name='c:\Desktop\Temp'} Where ResultClass = CIM_DataFile" -ComputerName 10.14.34.81 -Credential administrator
    if($files)
    {
        $files|%{$_.Delete()|out-null}
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      相关资源
      最近更新 更多