Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/35: Рейтинг темы: голосов - 35, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34

Не верно работает скрипт а также как добавить авторизацию Powershell

13.03.2019, 14:33. Показов 7175. Ответов 17

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть вот такой скрипт
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
WorkFlow CopyFromRemote
{
  param([string[]]$Computers,$date,$ext,[int]$ThrottleLimit = 5)
  foreach -Parallel -ThrottleLimit $ThrottleLimit ($computer in $computers) {
    robocopy \\$computer\C$\users E:\backup_0day\$date\$computer $ext /S /W:0 /R:0
                robocopy \\$computer\D$\ E:\backup_0day\$date\$computer $ext /S /W:0 /R:0
                robocopy \\$computer\E$\ E:\backup_0day\$date\$computer $ext /S /W:0 /R:0
                robocopy \\$computer\F$\ E:\backup_0day\$date\$computer $ext /S /W:0 /R:0
                robocopy \\$computer\G$\ E:\backup_0day\$date\$computer $ext /S /W:0 /R:0
  }
}
 
$extensions= Get-Content "C:\r.txt"
$extensions=$extensions.Split(',')
$date=Get-Date -format 'dd.MM.yyyy'
$computers = Get-Content "C:\computer.txt"
 
CopyFromRemote $computers $date $extensions
Но, есть проблема, в переменную $computers передается только одно, первое имя компьютера в перечислении, где мог ошибиться? в файле computer.txt идут названия компьютеров друг под другом. Точно также как и в r.txt в переменной $extensions но там все в порядке там список расширений файлов и они передаются все.

Второй вопрос есть также скрипт авторизации
PowerShell
1
2
3
$password = Get-Content C:\password.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential("Администратор",$password)
Enter-PSSession tcm011 -Credential $cred
Предварительно пароль был зашифрован так
PowerShell
1
2
Read-Host -Prompt "Введите пароль" -AsSecureString |
    ConvertFrom-SecureString | Set-Content C:\password.txt
Но после запуска скрипта авторизации получаю ошибку
Кликните здесь для просмотра всего текста
Enter-PSSession : Connecting to remote server tcm011 failed with the following error message : WinRM не удается обработать запрос. Пр
и использовании проверки подлинности Kerberos возникла следующая ошибка с кодом ошибки 0x80090311: Отсутствуют серверы, которые могли
бы обработать запрос на вход в сеть.
Возможные причины:
- Указаны неверные имя пользователя или пароль.
- Используется проверка подлинности Kerberos без указания способа проверки подлинности и имени пользователя.
- Kerberos принимает имена пользователей домена, но не принимает имена локальных пользователей.
- Имя субъекта-службы (SPN) для имени и порта удаленного компьютера не существует.
- Клиентский и удаленный компьютеры находятся в разных доменах, между которыми отсутствует доверительное отношение.
После проверки указанных выше проблем попробуйте выполнить следующее:
- Просмотрите в средстве "Просмотр событий" события, относящиеся к проверке подлинности.
- Измените способ проверки подлинности, добавьте конечный компьютер в конфигурацию TrustedHosts для WinRM либо воспользуйтесь транс
портом HTTPS.
Помните о том, что компьютеры в списке TrustedHosts могут не проходить проверку подлинности.
- Для получения дополнительных сведений о конфигурации WinRM выполните следующую команду: winrm help config. For more information,
see the about_Remote_Troubleshooting Help topic.
At line:3 char:1
+ Enter-PSSession tcm011 -Credential $cred
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (tcm011:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Попробовал просто авторизоваться немного более простым методом
PowerShell
1
$cred = get-credential username
Выскакивает окно для ввода пароля, ввожу пароль и та же ошибка что и в спойлере. При этом если набрать адрес компьютера в проводнике и ввести те же самые логин и пароль авторизация проходит. На вопрос а пробовал ли имя пользователя задать (имя компьютера\пароль) то отвечу да, как ток не пробовал.

И третий вопрос, как мне объединить эти два скрипта, чтоб с начала происходила авторизация на всех пк в которые будут переданы в переменную $computers а потом работа скрипта.

Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2019, 14:33
Ответы с готовыми решениями:

В скрипт добавить авторизацию Вконтакте
Всем доброго времени суток! Понадобилось в скрипт добавить авторизацию Вконтакте. Скрипт парсит страницу и отсылает на почту статус...

Скрипт работает не верно
Здравствуйте.Есть скрипт который по нажатию на кнопку записывает текущее время в инпут. Но проблема- он записывает время автоматически,...

Не верно работает скрипт
 <?php if(isset($_POST)) $a = $_POST; if(isset($_POST)) $b = $_POST; if(isset($_POST)) $c = $_POST; ...

17
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
13.03.2019, 16:35
Цитата Сообщение от mzfaker Посмотреть сообщение
Но, есть проблема, в переменную $computers передается только одно, первое имя компьютера в перечислении, где мог ошибиться?
Попробуйте убрать [string[]] из [string[]]$Computers

Добавлено через 5 минут
Цитата Сообщение от mzfaker Посмотреть сообщение
Enter-PSSession : Connecting to remote server tcm011 failed with the following error message : WinRM не удается обработать запрос. При использовании проверки подлинности Kerberos возникла следующая ошибка с кодом ошибки 0x80090311: Отсутствуют серверы, которые могли бы обработать запрос на вход в сеть.
Ну так добавьте ключ -Authentication и попробуйте другие методы (не Kerberos): "Default", "Basic", "Credssp", "Digest", "Kerberos", "Negotiate", and "NegotiateWithImplicitCredential"

Добавлено через 3 минуты
+ о какой УЗ для аутентификации идёт речь - локальная на этих ПК или доменная?
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
13.03.2019, 17:15  [ТС]
Локальная

Добавлено через 26 секунд
Цитата Сообщение от KDE777 Посмотреть сообщение
+ о какой УЗ для аутентификации идёт речь - локальная на этих ПК или доменная?
Локальная

Добавлено через 5 минут
Цитата Сообщение от KDE777 Посмотреть сообщение
Попробуйте убрать [string[]] из [string[]]$Computers
Убрал, тоже самое, причем странно, если мне память не изменяет, то когда первый раз запускал этот скрипт, то он видел все компьютеры в списке, и происходило копирование в несколько потоков, сейчас же нет.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
13.03.2019, 17:30
Цитата Сообщение от mzfaker Посмотреть сообщение
Убрал, тоже самое, причем странно, если мне память не изменяет, то когда первый раз запускал этот скрипт, то он видел все компьютеры в списке
Проверьте, без всяких WorkFlow, что в "C:\computer.txt", действительно то что нужно:

PowerShell
1
2
$computers = Get-Content -ReadCount -Path 'C:\computer.txt'
foreach ($computer in $computers) {$computer}
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
14.03.2019, 12:44  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
$computers = Get-Content -ReadCount -Path 'C:\computer.txt'
foreach ($computer in $computers) {$computer}
ага так видит, только для -ReadCount нужно было указать "1" иначе работает но выдает что не задан параметр.

Опробовал все вместе, все бы ничего но создает вот такой путь
Code
1
2
3
4
5
6
7
8
9
10
11
 Новая папка          0   \\pc010\C$\users\petrov\AppData\Local\Application Data\Application Data\Application Data\Application Da
ta\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application 
Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applicatio
n Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applicat
ion Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applic
ation Data\Application Data\Adobe\Color\
      Новая папка          0  \\pc011\C$\users\sidorov\AppData\Local\Application Data\Application Data\Application Data\Application Da
ta\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application 
Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applicatio
n Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Adobe\Ac
robat\Distiller DC\
Application Data\Application Data\Application Data\Application Data\Application Data\ - Зациклил
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
14.03.2019, 13:14
Лучший ответ Сообщение было отмечено mzfaker как решение

Решение

Цитата Сообщение от mzfaker Посмотреть сообщение
только для -ReadCount нужно было указать "1"
Этот ключ случайно остался, можете "-ReadCount 1" совсем убрать...

Добавлено через 3 минуты
Цитата Сообщение от mzfaker Посмотреть сообщение
Опробовал все вместе, все бы ничего но создает вот такой путь
Что и где создаёт?

Добавлено через 10 минут
Цитата Сообщение от mzfaker Посмотреть сообщение
\Application Data\Application Data\Application Data\Application Da
ta\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data...
Понял в чём у вас проблема, вы с помощью robocopy копируете профили пользователей, а там есть junction point (символическая ссылка) "Application Data", вот на ней robocopy и спотыкается...

https://answers.microsoft.com/... 57e4d27232

https://www.experts-exchange.c... -Data.html

Добавлено через 4 минуты
При копирование данных из профиля с помощью robocopy, рекомендуется исключать junction points:

/XJD

так же, можно убрать папку AppData и скрытые/системные файлы:

/XD AppData /XA:SH
1
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
14.03.2019, 13:24  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Что и где создаёт?
Ну каталоги файлы
PowerShell
1
robocopy \\$computer\D$\ - путь где сканировать
PowerShell
1
E:\backup_0day\$date\$computer - путь куда сохранять
При выполнение получается что он зацикливает Application Data
Вот так он должен выглядеть уже на диске
PowerShell
1
\\pc010\C$\users\petrov\AppData\Local\Application Data\Adobe\Color\
а выглядит вот так
Кликните здесь для просмотра всего текста
\\pc010\C$\users\petrov\AppData\Local\Ap plication Data\Application Data\Application Data\Application Da
ta\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application
Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applicatio
n Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applicat
ion Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Applic
ation Data\Application Data\Adobe\Color\
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
14.03.2019, 13:25
Цитата Сообщение от mzfaker Посмотреть сообщение
При выполнение получается что он зацикливает Application Data
уже ответил выше
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
14.03.2019, 13:38  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
уже ответил выше
О! То что нужно, ток мысль появилась по ссылкам но что т не взял во внимание! Спасибо!
Что касается авторизации
Negotiate
Кликните здесь для просмотра всего текста
Enter-PSSession : Connecting to remote server tcm010 failed with the following error message : Службе WinRM не удается обработать зап
рос. При использовании проверки подлинности согласованием произошла следующая ошибка с кодом 0x8009030e: Указанный сеанс работы не су
ществует. Возможно, он уже завершен.
Возможная причина: предоставленные учетные данные недопустимы на конечном сервере или не удалось проверить удостоверение сервера. Е
сли вы доверяете этому серверу, добавьте его имя в список TrustedHosts и повторите запрос. Для просмотра или изменения списка Trusted
Hosts воспользуйтесь командой winrm.cmd. Обратите внимание, что в списке TrustedHosts могут находиться компьютеры, не прошедшие прове
рку подлинности. Для получения дополнительных сведений об изменении списка TrustedHosts выполните следующую команду: winrm help confi
g. For more information, see the about_Remote_Troubleshooting Help topic.
At C:\auth.ps1:5 char:1
+ Enter-PSSession -Authentication Negotiate -ComputerName tcm010 -Cred ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (tcm010:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

basic
Кликните здесь для просмотра всего текста
Enter-PSSession : Connecting to remote server tcm010 failed with the following error message : Клиенту WinRM не удается обработать за
прос. В настоящее время в конфигурации клиента отключена передача незашифрованных данных. Измените конфигурацию клиента и повторите з
апрос. For more information, see the about_Remote_Troubleshooting Help topic.
At C:\auth.ps1:5 char:1
+ Enter-PSSession -Authentication basic -ComputerName tcm010 -Credenti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (tcm010:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Credssp
Кликните здесь для просмотра всего текста
Enter-PSSession : Connecting to remote server tcm010 failed with the following error message : Клиенту WinRM не удается обработать за
прос. В настоящее время в конфигурации клиента отключена проверка подлинности CredSSP. Измените конфигурацию клиента и повторите запр
ос. Проверка подлинности CredSSP также должна быть включена в конфигурации сервера. Кроме того, необходимо изменить групповую политик
у, чтобы разрешить делегирование учетных данных конечному компьютеру. Используйте gpedit.msc и проверьте следующую политику: Конфигур
ация компьютера -> Административные шаблоны -> Система -> Делегирование учетных данных -> Разрешить делегирование новых учетных данн
ых. Убедитесь, что она включена и использует имя участника-службы, соответствующее конечному компьютеру. Например, если конечный ком
пьютер имеет имя "myserver.domain.com", имя участника-службы может иметь одно из следующих значений: "WSMAN/myserver.domain.com" или
"WSMAN/*.domain.com" For more information, see the about_Remote_Troubleshooting Help topic.
At C:\auth.ps1:5 char:1
+ Enter-PSSession -Authentication Credssp -ComputerName tcm010 -Creden ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (tcm010:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

NegotiateWithImplicitCredential
Кликните здесь для просмотра всего текста
Enter-PSSession : Cannot bind parameter 'Credential' to the target. Exception setting "Credential": "A Credential cannot be specified
when NegotiateWithImplicitCredential is specified."
At C:\auth.ps1:5 char:99
+ ... gotiateWithImplicitCredential -ComputerName tcm010 -Credential $cred
+ ~~~~~
+ CategoryInfo : WriteError: ( [Enter-PSSession], ParameterBindingException
+ FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerSh ell.Commands.EnterPSSessionCommand


Дело в том что компьютеры в домене, но домена больше не существует, это буду исправлять дальше, но в данный момент, доступ к компьютерам есть если набрать в проводнике \\имя пк\C$ появляется окно ввожу логин пароль локальной учетной записи и получаю доступ, вот как он через проводник получает доступ?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
14.03.2019, 14:11
Лучший ответ Сообщение было отмечено mzfaker как решение

Решение

Цитата Сообщение от mzfaker Посмотреть сообщение
Дело в том что компьютеры в домене, но домена больше не существует, это буду исправлять дальше, но в данный момент, доступ к компьютерам есть если набрать в проводнике \\имя пк\C$ появляется окно ввожу логин пароль локальной учетной записи и получаю доступ, вот как он через проводник получает доступ?
Не путайте smb и WinRM - это совсем разные протоколы.

https://docs.microsoft.com/en-... onnections

Доступ к smb ресурсу, с указанием других credential, из PS делается так:

PowerShell
1
New-PSDrive -Name X -PSProvider FileSystem -Root \\Server01\Public -Credential $cred
1
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
14.03.2019, 14:17  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Не путайте smb и WinRM - это совсем разные протоколы.
Супер! Большущие вам спасибо! та кстати, доступ и по smb пропал, буду перезаводить ((
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
11.04.2019, 16:56  [ТС]
del

Добавлено через 2 часа 44 минуты
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
WorkFlow CopyFromRemote
{
    param([string[]]$computers,$date,$ext,[int]$ThrottleLimit = 5)
    foreach -Parallel -ThrottleLimit $ThrottleLimit ($computer in $computers) {
        robocopy \\$computer\C$\users\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0
        robocopy \\$computer\D$\users\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0
        robocopy \\$computer\E$\users\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0
        robocopy \\$computer\F$\users\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0
 
    }
}
 
 
$extensions= Get-Content -Path 'C:\script\r.txt'
$extensions=$extensions.Split(',')
$date=Get-Date -format 'dd.MM.yyyy-(hh-mm-ss)'
$computers = Get-Content  -Path 'C:\script\computer.txt'
 
CopyFromRemote $computers $date $extensions
Спустя несколько часов работы, очень сильно снижается скорость копирования, загрузка сети падает с 800 до 15мб
если паралельно начать копировать что то большое то копирует быстро, значит не диск и не сеть.
если отменить скрипт и запустить снова, скорость опять возрастает как надо.
Что с ним может быть не так, ушла скорость копирования спустя 120гб и 3-4 часа
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
11.04.2019, 17:53
Цитата Сообщение от mzfaker Посмотреть сообщение
Спустя несколько часов работы, очень сильно снижается скорость копирования, загрузка сети падает с 800 до 15мб
если паралельно начать копировать что то большое то копирует быстро, значит не диск и не сеть.
если отменить скрипт и запустить снова, скорость опять возрастает как надо.
Вы же занимаетесь каким-то администрированием, скрипты запускаете. Открывайте "Resource Monitor", "Performance Monitor" и ищите причину.

У вас профили копируются, да ещё и параллельно. Могу предположить, что дело доходит до какого-то каталога с тысячами мелких файлов (а может и сотни тысяч) - понять это можно, как раз с помощью мониторинга. Обычно, на таких задачах, скорость копирования падает многократно.
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
12.04.2019, 13:13  [ТС]
Нет в составе расширений множества мелких файлов, а также поток виден отображается что на данный момент копирует, нормальные объемные файлы по 30-50мб. Путем какого то администрирования, в системной мониторе нет никаких аномалий, не длин очередей, не завышенного времени обращения, абсолютно ничего, что могло бы дать такой эффект. повторюсь если скрипт прервать а потом снова запустить, сливает 50 60 гигов и опять ползет медленно, без нагрузки системы, при этом можно запустить параллельно этот же скрипт то он тоже будет работать какое то время очень быстро. В случае не исправности дисков или загрузки системы или системных ресурсов, начинает работать медленно все, но этого не происходит.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
12.04.2019, 14:02
Цитата Сообщение от mzfaker Посмотреть сообщение
в системной мониторе нет никаких аномалий, не длин очередей, не завышенного времени обращения, абсолютно ничего, что могло бы дать такой эффект. повторюсь если скрипт прервать а потом снова запустить, сливает 50 60 гигов и опять ползет медленно, без нагрузки системы, при этом можно запустить параллельно этот же скрипт то он тоже будет работать какое то время очень быстро.
Ок, ваш скрипт, одновременно для 5-ти ПК из списка, последовательно запускает 4 раза robocopy.exe. Т.е. у вас в системе, одновременно работает 5 процессов robocopy.exe, которые копируют данные с 5-ти разных ПК.

Измените подход - WorkFlow, заменяете на Invoke-Command, выполняющиеся на стороне клиента:

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
$computers  = Get-Content  -Path 'C:\script\computer.txt'
$extensions = (Get-Content -Path 'C:\script\r.txt').Split(',')
$date       = Get-Date -format 'dd.MM.yyyy-(hh-mm-ss)'
 
$ScriptBlock = {
    
    $date,$ext = $args
   'C','D','E','F' | ForEach {robocopy "$_`:\Users\" \\server\"Резервные копии пользователей"\$date\$env:COMPUTERNAME $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0}
}
 
# v 1 - один job для всего списка
Invoke-Command -ComputerName $computers -ArgumentList $date,$extensions -ScriptBlock $ScriptBlock -AsJob 
Get-Job | Receive-Job -Wait -AutoRemoveJob
 
# v 2 - для каждого ПК запускаем отдельный job
$computers | ForEach { Invoke-Command -ArgumentList $date,$extensions -ComputerName $_ -AsJob -ScriptBlock $ScriptBlock}
Get-Job | Receive-Job -Wait -AutoRemoveJob
 
# v 3 - запускаем 5 job'ов (для каждого ПК свой) и ждём пока все не выполнятся и так для всего списка
Get-Content -Path 'C:\script\computer.txt' -ReadCount 5 | ForEach {
 
    $_ | ForEach {Invoke-Command -ArgumentList $date,$extensions -ComputerName $_ -AsJob -ScriptBlock $ScriptBlock}
    Get-Job | Receive-Job -Wait -AutoRemoveJob
}
 
# v 4 - запускаем job'ы (для каждого ПК свой) и постоянно проверяем, что количество "Get-Job -State Running" = 5, иначе добавляем ещё один job
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
12.04.2019, 15:31  [ТС]
сейчас попробую, но пока, я вот что попробовал, просто запустил с сервера 6 ть копий робокопи, все скопировалось, при этом без фильтров по расширениям, т.е копировались даже мелкие, без снижение скорости, все на максималках работало.

Добавлено через 3 минуты
Цитата Сообщение от KDE777 Посмотреть сообщение
$computers *= Get-Content *-Path 'C:\script\computer.txt'
$extensions = (Get-Content -Path 'C:\script\r.txt').Split(',')
$date * * * = Get-Date -format 'dd.MM.yyyy-(hh-mm-ss)'
$ScriptBlock = {
$date,$ext = $args
* *'C','D','E','F' | ForEach {robocopy "$_`:\Users" \\server"Резервные копии пользователей"\$date\$env:COMPUTERNAME $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0}
}
# v 1 - один job для всего списка
Invoke-Command -ComputerName $computers -ArgumentList $date,$extensions -ScriptBlock $ScriptBlock -AsJob
Get-Job | Receive-Job -Wait -AutoRemoveJob
# v 2 - для каждого ПК запускаем отдельный job
$computers | ForEach { Invoke-Command -ArgumentList $date,$extensions -ComputerName $_ -AsJob -ScriptBlock $ScriptBlock}
Get-Job | Receive-Job -Wait -AutoRemoveJob
# v 3 - запускаем 5 job'ов (для каждого ПК свой) и ждём пока все не выполнятся и так для всего списка
Get-Content -Path 'C:\script\computer.txt' -ReadCount 5 | ForEach {
$_ | ForEach {Invoke-Command -ArgumentList $date,$extensions -ComputerName $_ -AsJob -ScriptBlock $ScriptBlock}
* * Get-Job | Receive-Job -Wait -AutoRemoveJob
}
# v 4 - запускаем job'ы (для каждого ПК свой) и постоянно проверяем, что количество "Get-Job -State Running" = 5, иначе добавляем ещё один job
только у меня немного по другому,

вы в начале указали папка users для всех дисков, я просто не исправлял там пути, на самом деле только в диске С папка users остальные диски с корня

PowerShell
1
2
3
4
        robocopy \\$computer\C$\users\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData /XA:SH /S /W:0 /R:0
        robocopy \\$computer\D$\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData *.vib /XA:SH /S /W:0 /R:0
        robocopy \\$computer\E$\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData *.vib /XA:SH /S /W:0 /R:0
        robocopy \\$computer\F$\ E:\"Резервные копии пользователей"\$date\$computer $ext /XJD /XD AppData *.vib /XA:SH /S /W:0 /R:0
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 34
17.04.2019, 13:22  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Измените подход - WorkFlow, заменяете на Invoke-Command, выполняющиеся на стороне клиента:
какие то ошибки, разобрать не могу по каждому компу так, как понял данные считывает какие пк какие расширения и все, скрипт завершается, ошибок нет, кроме тех компов к которым не смог подключиться,
Кликните здесь для просмотра всего текста

019/04/17 13:18:04 Ћ˜€ЃЉЂ 5 (0x00000005) ‘®§¤**ЁҐ Ї*ЇЄЁ **§**зҐ*Ёп \\t2000\bk\17.04.2019-(02-18-02)\TCM014\
ЋвЄ*§**® ў ¤®бвгЇҐ.


-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------

Ќ*з*«®: 17 *ЇаҐ«п 2019 Ј. 13:18:04
2019/04/17 13:18:04 Ћ˜€ЃЉЂ 5 (0x00000005) Џ®«гзҐ*ЁҐ вЁЇ* д*©«®ў®© бЁб⥬л **§**зҐ*Ёп \\t2000\bk\17.04.2019-(02-18-02)\TCM014\
ЋвЄ*§**® ў ¤®бвгЇҐ.


€бв®з*ЁЄ = E:\
Ќ*§**зҐ*ЁҐ - \\t2000\bk\17.04.2019-(02-18-02)\TCM014\

”*©«л: *.DIM
*.LAS
*.LIN
*.MLN
*.PAT
*.ACTM
*.ARX
*.ATC
*.BMP
*.CUI
*.CUIx
*.CRX
*.DBX
*.DCE
*.DCL
*.DVB
*.FAS
*.LSP
*.PGP
*.SCR
*.SHP
*.SLB
*.SLD
*.VLX
*.XPG
*.XTP
*.DST
*.DWF
*.DWFx
*.DWG
*.DWS
*.DWT
*.DXB
*.DXF
*.SV$
*.ACB
*.ADT
*.ARG
*.AWS
*.BCL
*.BLK
*.CBL
*.CDC
*.CFG
*.CHM
*.CHX
*.CTB
*.CUS
*.DBQ
*.DCT
*.DXE
*.DXX
*.FMP
*.HDI
*.NFL
*.RML
*.SHX
*.SLG
*.STB
*.TTF
*.TXT
*.UDL
*.XLG
*.DSD
*.PC3
*.PLT
*.PMP
*.PSS
*.PTW
*.ADSKLIB
*.IES
*.BMP
*.GIF
*.JPEG
*.JPG
*.JPE
*.JPEG
*.jp2
*.PNG
*.PSD
*.RAW
*.TGA
*.TIFF
*.TIF
*.WDP
*.HDP
*.CPT
*.AI
*.CDR
*.CGM
*.SVG
*.WMF
*.EMF
*.DOCX
*.DOCM
*.DOTX
*.DOTM
*.XLSX
*.XLS
*.XLSM
*.XLTX
*.XLT
*.XLTM
*.XLSB
*.XLAM
*.XLA
*.PPTX
*.PPT
*.PPTM
*.PPSX
*.PPS
*.PPSM
*.POTX
*.POT
*.POTM
*.PPAM
*.PPA
*.pdf
*.rar
*.{pb
*.abx
*.bmf
*.ccx
*.cdr
*.cif
*.cmm
*.cmx
*.cor
*.cph
*.cps
*.cpx
*.cwf
*.des
*.drw
*.dwz
*.eqn
*.event
*.evy
*.ix2
*.ixa
*.ixb
*.jbf
*.jbr
*.lab
*.mip
*.msk
*.mst
*.msw
*.pal
*.papers
*.pen
*.pfr
*.pp4
*.pp5
*.ppf
*.pspbrush
*.pspimage
*.ptx
*.qpw
*.rif
*.riff
*.shw
*.snapfireshow
*.tub
*.uwl
*.vft
*.vsp
*.wb2
*.wb3

€бЄ«озҐ**лҐ Ї*ЇЄЁ: AppData

Џ*а*¬Ґвал: /S /DCOPYA /COPYAT /XJD /XA:SH /R:0 /W:0

------------------------------------------------------------------------------

2019/04/17 13:18:04 Ћ˜€ЃЉЂ 5 (0x00000005) ‘®§¤**ЁҐ Ї*ЇЄЁ **§**зҐ*Ёп \\t2000\bk\17.04.2019-(02-18-02)\TCM014\
ЋвЄ*§**® ў ¤®бвгЇҐ.


-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------

Ќ*з*«®: 17 *ЇаҐ«п 2019 Ј. 13:18:04
2019/04/17 13:18:04 Ћ˜€ЃЉЂ 3 (0x00000003) Џ®«гзҐ*ЁҐ вЁЇ* д*©«®ў®© бЁбвҐ¬л Ёбв®з*ЁЄ* F:\
‘Ёб⥬Ґ *Ґ г¤*Ґвбп **©вЁ гЄ*§***л© Їгвм.


2019/04/17 13:18:04 Ћ˜€ЃЉЂ 5 (0x00000005) Џ®«гзҐ*ЁҐ вЁЇ* д*©«®ў®© бЁб⥬л **§**зҐ*Ёп \\t2000\bk\17.04.2019-(02-18-02)\TCM014\
ЋвЄ*§**® ў ¤®бвгЇҐ.


€бв®з*ЁЄ - F:\
Ќ*§**зҐ*ЁҐ - \\t2000\bk\17.04.2019-(02-18-02)\TCM014\

”*©«л: *.DIM
*.LAS
*.LIN
*.MLN
*.PAT
*.ACTM
*.ARX
*.ATC
*.BMP
*.CUI
*.CUIx
*.CRX
*.DBX
*.DCE
*.DCL
*.DVB
*.FAS
*.LSP
*.PGP
*.SCR
*.SHP
*.SLB
*.SLD
*.VLX
*.XPG
*.XTP
*.DST
*.DWF
*.DWFx
*.DWG
*.DWS
*.DWT
*.DXB
*.DXF
*.SV$
*.ACB
*.ADT
*.ARG
*.AWS
*.BCL
*.BLK
*.CBL
*.CDC
*.CFG
*.CHM
*.CHX
*.CTB
*.CUS
*.DBQ
*.DCT
*.DXE
*.DXX
*.FMP
*.HDI
*.NFL
*.RML
*.SHX
*.SLG
*.STB
*.TTF
*.TXT
*.UDL
*.XLG
*.DSD
*.PC3
*.PLT
*.PMP
*.PSS
*.PTW
*.ADSKLIB
*.IES
*.BMP
*.GIF
*.JPEG
*.JPG
*.JPE
*.JPEG
*.jp2
*.PNG
*.PSD
*.RAW
*.TGA
*.TIFF
*.TIF
*.WDP
*.HDP
*.CPT
*.AI
*.CDR
*.CGM
*.SVG
*.WMF
*.EMF
*.DOCX
*.DOCM
*.DOTX
*.DOTM
*.XLSX
*.XLS
*.XLSM
*.XLTX
*.XLT
*.XLTM
*.XLSB
*.XLAM
*.XLA
*.PPTX
*.PPT
*.PPTM
*.PPSX
*.PPS
*.PPSM
*.POTX
*.POT
*.POTM
*.PPAM
*.PPA
*.pdf
*.rar
*.{pb
*.abx
*.bmf
*.ccx
*.cdr
*.cif
*.cmm
*.cmx
*.cor
*.cph
*.cps
*.cpx
*.cwf
*.des
*.drw
*.dwz
*.eqn
*.event
*.evy
*.ix2
*.ixa
*.ixb
*.jbf
*.jbr
*.lab
*.mip
*.msk
*.mst
*.msw
*.pal
*.papers
*.pen
*.pfr
*.pp4
*.pp5
*.ppf
*.pspbrush
*.pspimage
*.ptx
*.qpw
*.rif
*.riff
*.shw
*.snapfireshow
*.tub
*.uwl
*.vft
*.vsp
*.wb2
*.wb3

€бЄ«озҐ**лҐ Ї*ЇЄЁ: AppData

Џ*а*¬Ґвал: /S /DCOPYA /COPYAT /XJD /XA:SH /R:0 /W:0

------------------------------------------------------------------------------

2019/04/17 13:18:04 Ћ˜€ЃЉЂ 3 (0x00000003) „®бвгЇ Є Ёб室*®© Ї*ЇЄҐ F:\
‘Ёб⥬Ґ *Ґ г¤*Ґвбп **©вЁ гЄ*§***л© Їгвм.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.04.2019, 16:16
Цитата Сообщение от mzfaker Посмотреть сообщение
какие то ошибки, разобрать не могу по каждому компу так, как понял данные считывает какие пк какие расширения и все
И чего не понятного? Вы получаете результат выполнения robocopy, т.е. то, что robocopy выводит в консоль на каждом из ПК.

Code
1
2
3
4
5
6
2019/04/17 13:18:04 ОШИБКА 3 (0x00000003) Доступ к исходной папке F:\
Системе не удается найти указанный путь.
 
Начало: 17 апреля 2019 г. 13:18:04
2019/04/17 13:18:04 ОШИБКА 5 (0x00000005) Получение типа файловой системы назначения \\t2000\bk\17.04.2019-(02-18-02)\TCM014\
Отказано в доступе.
и т.п.

У robocopy есть ключ /UNILOG, чтобы результат работы сохранять в файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2019, 16:16
Помогаю со студенческими работами здесь

Запустить PowerShell-скрипт как службу
Есть скрипт, он находит некоторый процесс (он в кол. 4 штук) и разбрасывает каждый процесс на каждое ядро. Итого каждый процесс выполняется...

Как реализовать авторизацию в другом приложении через PHP-скрипт?
Здравствуйте! Такой вопрос: предположим, у меня есть какой-то веб-сайт (или веб-приложение) (к примеру, phpMyAdmin), и есть скрипт с...

Как запустить скрипт на удаленном сервере без winrm, rpc. Powershell
В связи со свирепствующими вирусами появилась задача пере организовать работу скрипт-сервера. Ранее все работало через WinRM, штатные...

Как добавить авторизацию при созданий текстового файла
Помогите плз кому не сложно!!!!! Программа создает log.txt задача создать его на сервере в расшареной папке но сервер требует...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru