#powershell
Вопрос:
Я пытаюсь создать ps1, который может выполнять поиск по нескольким папкам в списке нескольких серверов, но, похоже, это не сработало. Что-то не так с папкой*, я думаю. Извините, я очень новичок в этом деле.
$folders = get-content "C:tempfolders.txt"
get-content c:tempservers.txt | Foreach {
Get-ChildItem -Path "c:temp" -include *folders -Recurse -ErrorAction
silentlycontinue} | export-csv c:Tempresults.csv
Комментарии:
1. Всегда ли папки, в которых вы хотите выполнить поиск
C:temp
, где-то вложены?2. ДА. Я хочу выполнить поиск по нескольким папкам в c:/temp.
Ответ №1:
Вы читаете текстовый файл с (предположительно) списком имен серверов для проверки, но в своем коде вы ничего не делаете с этим, кроме как повторяете этот список..
Попробуй
$folders = Get-Content 'C:tempfolders.txt' # the list of foldernames to look for
Get-Content 'C:tempservers.txt' | ForEach-Object {
# construct a UNC path to the C:Temp folder on the remote server (\serverc$temp)
# the $_ Automatic variable contains one servername in each iteration
$remotePath = "\$_C$temp"
Get-ChildItem -Path $remotePath -Include $folders -Directory -Recurse -ErrorAction SilentlyContinue |
# select properties you need
Select-Object @{Name = 'ComputerName'; Expression = {$_}}, Name, FullName, CreationTime, LastAccessTime, LastWriteTime
} | Export-Csv 'C:tempresults.csv' -NoTypeInformation
или
Попросите удаленные серверы выполнить работу и вернуть вам результаты. Возможно, вам потребуется добавить учетные данные при вызове команды:
$folders = Get-Content 'C:tempfolders.txt' # the list of foldernames to look for
Get-Content 'C:tempservers.txt' | ForEach-Object {
Invoke-Command -ComputerName $_ -ScriptBlock {
# this is running on the remote computer, so it uses it's own LOCAL path
# the $folders variable needs to be scoped '$using:folders', otherwise it is unknown in the scriptblock
Get-ChildItem -Path 'C:temp' -Include $using:folders -Directory -Recurse -ErrorAction SilentlyContinue |
# select and output the properties you need
Select-Object @{Name = 'ComputerName'; Expression = {$env:COMPUTERNAME}}, Name, FullName, CreationTime, LastAccessTime, LastWriteTime
}
} | Export-Csv 'C:tempresults.csv' -NoTypeInformation
Комментарии:
1. Спасибо тебе оооочень большое. В настоящее время я запускаю команду (Test-Path \xxxxxxxxxxf$имя папки) для проверки пути, и это очень неэффективно. Этот скрипт работает сейчас и может выбрать, какой столбец в результате. Я буду использовать этот вывод скрипта, чтобы сделать все остальное. Еще раз спасибо !!