Неверный запрос WMI

У меня есть список серверов, который передается в функцию. Я хочу запросить каждую машину и получить полный список всех файлов и папок. Я хочу записать файл на свой локальный компьютер, именем файла будет IP-адрес цели ($computer) и добавить все данные из $userdata в файл.

Я продолжаю получать следующую ошибку:

Get-WmiObject: неверный запрос

foreach ($computer in $Server_List)
{
    $userdata = Get-WmiObject -Credential -Computer $computer -Query "SELECT * from CIM_Data File WHERE Drive = 'C:'"
    echo "$computer" | Out-File -FilePath $File_path + $computer +".txt" -Append $userdata
}

person iNoob    schedule 01.02.2016    source источник


Ответы (1)


У вас есть ложный пробел в вашем запросе. Имя класса CIM_DataFile, а не CIM_Data File.

Этот:

"SELECT * from CIM_Data File WHERE Drive = 'C:'"
                       ^

нужно выглядеть так:

"SELECT * from CIM_DataFile WHERE Drive = 'C:'"
person Ansgar Wiechers    schedule 01.02.2016
comment
Вы можете построить свой путь к файлу следующим образом: $outputfile = Join-Path $File_path "$computer.txt" вместо того, чтобы выполнять конкатенацию строк в операторе Out-File. Вы также можете экспортировать результат запроса в CSV, а не использовать Out-File. - person Ansgar Wiechers; 01.02.2016
comment
Хорошо, спасибо за совет, так что Export-CSV $outputfile = Join-Path $File_path "$computer.txt" ? - person iNoob; 01.02.2016
comment
Было бы неплохо, если бы я мог фильтровать несколько расширений в запросе, но мне не повезло с AND Extension = 'txt' OR Extension = 'doc' и т. д. Так что в итоге я пошел по маршруту, который я использую сейчас, и я ищу отфильтровать CSV-файл после сбора - person iNoob; 01.02.2016
comment
Пожалуйста, не двигайте цель. Если у вас есть новый вопрос: опубликуйте новый вопрос. - person Ansgar Wiechers; 01.02.2016
comment
Спасибо за вашу помощь - person iNoob; 01.02.2016