Я пытаюсь прочитать список имен компьютеров из файла и сканировать каждый из файлов DLL в определенном наборе каталогов. В принципе, я хочу, чтобы он просматривал личный каталог каждого пользователя на ПК и искал любые DLL-файлы в каталоге .. \ AppData \ Roaming \.Непоследовательное поведение Get-ChildItem, вставляя пробел при использовании переменной в пути
Это не элегантный любыми средствами, но я новичок в PowerShell:
#runs DSQuery to get a list of machine names and export to a text file
c:\temp\get_pc_list.bat
$pcList = Get-Content c:\temp\pc_list.txt
#Removes a blank space at the end of each item in the text file
$pcList | foreach {$_.TrimEnd()} | Set-Content c:\temp\pc_list.txt
del C:\temp\file_check.txt
foreach ($computer in $pcList)
{
Get-ChildItem \\$computer\c$\users\*\AppData\Roaming\*.dll -recurse | Out-File -encoding unicode $("C:\temp\file_check.txt") -append -noclobber
}
Когда я бегу, я получаю сообщение, что «объект по указанному пути \ PC101 \ с $ \ пользователей не существует ». Похоже, что он добавляет пробел после «PC101», который является первым элементом в моем списке. Я проверил файл, нет лишних пробелов в конце каждой строки.
Я попытался включить путь в двойные кавычки, но результат тот же. Я что-то пропустил или не могу использовать переменную в пути?
Не могли бы вы вывести вывод '[Regex] :: Escape ($ computer)' в цикле 'foreach'? – briantist
попробовал 'Get-ChildItem \\ $ computer.trim() \ c $ \ users \ * \ AppData \ Roaming \ *. Dll' allready? – Paul
Myguess - это DSQ 上 ry возвращает некоторые имена с пробелом перед символом возврата строки (что разделяет имена ПК). Используйте либо обрезку, либо ADComputer/QADComputer, чтобы работать непосредственно с объектами PowerShell из AD, помогли бы ... –