Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/55: Рейтинг темы: голосов - 55, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 26.06.2015
Сообщений: 20

Не копируется файл Copy-Item

10.10.2018, 10:01. Показов 13649. Ответов 22

Студворк — интернет-сервис помощи студентам
День добрый, господа. У меня есть скрипт, который ищет определенный набор слов в файлах на компе и если находит, то пишет лог + должен копировать найденный файл на хранилку (эту часть я адаптировал сам, а по скольку руки в плане powershell у меня не из плеч, то все выглядит плачевно). Скрипт использует индексированный поиск Windows, что является крайне удобным, но при таком подходе у меня по какой-то причине не копируются ВСЕ файлы форматов отличных от txt.

Если планируете тестить у себя, то сначала нужно убедиться, что у вас включено индексирование.

Проблема в самом низу скрипта.

Сам скрипт:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
function Search-FileIndex {
<#
.PARAMETER Path
Absoloute or relative path. Has to be in the Search Index for results to be presented.
.PARAMETER Pattern
File name or pattern to search for. Defaults to *.*. Aliased to Filter to ergonomically match Get-ChildItem.
.PARAMETER Text
Free text to search for in the files defined by the pattern.
.PARAMETER Recurse
Add the parameter to perform a recursive search. Default is false.
.PARAMETER AsFSInfo
Add the parameter to return System.IO.FileSystemInfo objects instead of String objects.
.SYNOPSIS
Uses the Windows Search index to search for files.
.DESCRIPTION
Uses the Windows Search index to search for files. SQL Syntax documented at https://msdn.microsoft.com/en-us/library/windows/desktop/bb231256(v=vs.85).aspx Based on https://blogs.msdn.microsoft.com/mediaandmicrocode/2008/07/13/microcode-windows-powershell-windows-desktop-search-problem-solving/ 
.OUTPUTS
By default one string per file found with full path.
If the AsFSInfo switch is set, one System.IO.FileSystemInfo object per file found is returned.
#>
    [CmdletBinding()]
    param (  
        [Parameter(ValueFromPipeline = $true)]
        [string]$Path,
        [Parameter(Mandatory=$false,ParameterSetName="FullText")]
        [Parameter(Mandatory=$false)]
        [alias("Filter")] 
        [string]$Pattern = "*.*",
        [Parameter(Mandatory=$false,ParameterSetName="FullText")]
        [string]$Text = $null,
        [Parameter(Mandatory=$false)]
        [switch]$Recurse = $false,
        [Parameter(Mandatory=$false)]
        [switch]$AsFSInfo = $false
    )
    if($Path -eq ""){
        $Path = $PWD;
    } 
 
    $path = (Resolve-Path -Path $path).Path
 
    $pattern = $pattern -replace "\*", "%"
    $path = $path.Replace('\','/')
 
    if ((Test-Path -Path Variable:fsSearchCon) -eq $false)
    {
        $global:fsSearchCon = New-Object -ComObject ADODB.Connection
        $global:fsSearchRs = New-Object -ComObject ADODB.Recordset
    }
 
    $fsSearchCon.Open("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';")
 
    [string]$queryString = "SELECT System.ItemPathDisplay FROM SYSTEMINDEX WHERE System.FileName LIKE '" + $pattern + "' "
    if ([System.String]::IsNullOrEmpty($Text) -eq $false){
        $queryString += "AND FREETEXT('" + $Text + "') "
    }
 
    if ($Recurse){
        $queryString += "AND SCOPE='file:" + $path + "' ORDER BY System.ItemPathDisplay"
    }
    else {
        $queryString += "AND DIRECTORY='file:" + $path + "' ORDER BY System.ItemPathDisplay"
    }
    $fsSearchRs.Open($queryString, $fsSearchCon)
    # return
    While(-Not $fsSearchRs.EOF){
        if ($AsFSInfo){
            # Return a FileSystemInfo object 
            [System.IO.FileSystemInfo]$(Get-Item -LiteralPath ($fsSearchRs.Fields.Item("System.ItemPathDisplay").Value) -Force)
        }
        else {
            $fsSearchRs.Fields.Item("System.ItemPathDisplay").Value
        }
        $fsSearchRs.MoveNext()
    }
    $fsSearchRs.Close()
    $fsSearchCon.Close()
}
 
##################                        Допиливал сам                        ##################
 
$Date = Get-Date -Format d
$Senslog = "\\Хранилка\Senslogs\" + "$Date " + "$env:COMPUTERNAME " + "$env:UserName" + ".txt"
$Filepath = "\\Хранилка\Senslogs\Files"
 
Search-FileIndex -Path D:\ -Text "интересующий меня текст" -Recurse | Copy-Item -Force -Destination $Filepath  
Search-FileIndex -Path D:\ -Text "интересующий меня текст" -Recurse | Out-File -Append -LiteralPath $Senslog

Соус на гитхаб создателя скрипта: https://gist.github.com/arebee... e0f501c72d

Добавлено через 11 минут
Совсем забыл про текст ошибки!

Copy-Item : Не удается найти путь "C:\testuser2\Документы\DataFolder\Л ист Microsoft Excel.xlsx", так как он не существует.
C:\testuser2\Documents\DataFolder\Search SensData.ps1:93 знак:60
+ ... ext "интересующий меня текст" -Recurse | Copy-Item -Force -Destination $Filepath
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (D:\testuser2\До...soft Excel.xlsx:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Comman ds.CopyItemCommand
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2018, 10:01
Ответы с готовыми решениями:

Запустить команду Copy-Item с правами администратора
Добрый день! Подскажите, пожалуйста, как запустить команду Copy-Item с правами администратора. Пытаюсь записать файлы в папку...

Copy-item с удаленного компьютера правами другого пользователя
Добрый день. Столкнулся с такой проблемой. Мне нужно делать бэкап с определенных компов на определенную сетевую папку, доступ куда есть...

Copy-Item -Recurse с исключением определённых типов файлов
День добрый. Понадобилось мне тут скопировать 600 гб файлов с одного файлового сервера на другой. Там преимущественно офисные документы,...

22
0 / 0 / 0
Регистрация: 09.05.2018
Сообщений: 11
12.08.2019, 21:53
Студворк — интернет-сервис помощи студентам
Ну соглашусь, способ не очень приятный) но все же, как насчёт копирования результата)?
0
 Аватар для bidstrup
419 / 179 / 27
Регистрация: 11.03.2018
Сообщений: 771
12.08.2019, 23:41
Цитата Сообщение от KDE777 Посмотреть сообщение
Если в Windows Search index database храниться и сам текст в оригинальном регистре, тогда замечательно.
А на хрена бы он был тогда нужен, если бы этого не умел. В том-то и дело, что искать он должен просто пулей.
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
13.08.2019, 10:51
Цитата Сообщение от Dimon2490 Посмотреть сообщение
как насчёт копирования результата
С чём именно у вас возникла проблема?

Пример с поиском по содержимому, в случае совпадения с шаблоном поиска, выводит $Filename на экран, а вы можете вместо этого добавлять такие имена в массив $list += $Filename и когда все файлы будут перебраны, передать этот массив Copy-Item (заодно можно будет проверить, что нет одинаковых имён).

Добавлено через 3 минуты
Цитата Сообщение от bidstrup Посмотреть сообщение
В том-то и дело, что искать он должен просто пулей.
В этом никто и не сомневался. Вопрос в получение проиндексированного текста в оригинальном виде, т.е. с сохранением регистра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2019, 10:51

Копирование папки с файлами на удаленную машину Copy-Item
Доброго времени суток. В общем столкнулся с такой бедой. Есть давольно простая команда для копирования каталога с целевой машины на...

Файл базы SQLITE не копируется через IO.File.Copy
Ребят, никто не сталкивался? Хочу сделать кнопочку создания (копирования) резервной коаии базы данных. База пока не сильно надулась, всего...

Не копируется файл.
Всё компилируется, ошибок не выдаёт, но файл в итоге не копируется, вот код: function GetSpecialFolderPath(folder : integer) : string;...

НЕ КОПИРУЕТСЯ ФАЙЛ
Ребят, помогите. Такая проблема. Занялся на медне оцифровкой своих видеокассет. Всё оцыфровывается нормально, сохраняю на HDD. А потом при...

Не копируется файл
procedure TForm1.Pic_FasClick(Sender: TObject); var S:string; begin if Pic_Dial.Execute then begin S:=Pic_Dial.FileName; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru