Лучший отвечающий
Автоматическая загрузка файлов

Вопрос
-
Здравствуйте
Есть CSV файл (с IP компьютеров ,папкой куда нужно залить файл , логин пароль для авторизации) вот пример:
IP;DIR;LOGIN;PASS
10.1.1.1;C$\BASE;Administrator;Qwerty756!
И так далее
Нужно сделать на PS меню
1 Выбрать файл
2 Выбрать файл списка компьютеров (300ПК) с указанным путем ( если папка на диске С не создана создать)
3 Отправить
Если можно выводить отчет куда файл загрузился а куда нет
Как такое сделать куда копать мб у кого есть решения или кто-то поможет сделать ?
25 декабря 2014 г. 14:03
Ответы
-
домена нет?
Import-Csv .\name.csv -Delimiter ";" | foreach { $IP = $_.ip $Dir = $_.dir $Path = $IP\$Dir $Pass = $_.pass $Login = $_.Login $PWord = ConvertTo-SecureString $Pass –AsPlainText -Force $Cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $Login, $PWord If (-Not (Test-Path -Path "$Path" -Credential $Cred){ new-item -path $path -itemtype directory -Credential $Cred } Copy-Item C:\pornolib\topsecret.txt -Destination $Path -Credential $Cred }
Для справки
http://technet.microsoft.com/library/hh849815.aspx
(Пример 7)http://technet.microsoft.com/library/hh849793.aspx
(Пример 1 или 2)http://technet.microsoft.com/en-us/library/hh849776.aspx
(Пример 1)http://technet.microsoft.com/library/hh849795.aspx
(Пример 2)Проверить возможности нет но как то похоже должно заработать
Как вариант можно посмотреть так же сюда (по поводу авторизации наверное это удобнее)
http://technet.microsoft.com/en-us/library/hh849717.aspx
Что касается меню то его можно сделать так
http://technet.microsoft.com/en-us/library/ff730937.aspx
http://technet.microsoft.com/en-us/library/ff730939.aspx
- Изменено Vector BCOModerator 25 декабря 2014 г. 21:15
- Предложено в качестве ответа KazunEditor 26 декабря 2014 г. 7:52
- Помечено в качестве ответа Trusilya 26 декабря 2014 г. 9:18
25 декабря 2014 г. 20:11Модератор -
Только Copy-Item не поддерживает параметр Credential, поэтому следует использовать New-PSDrive:
New-PSDrive -name X -psprovider FileSystem -root "\\$($_.IP)\$($_.Dir)" -Credential $cred Copy-Item C:\topsecret.txt -Destination X:\ Remove-PSDrive X -Force
-Credential<PSCredential>
This parameter is not supported by any providers installed with Windows PowerShell.
- Изменено KazunEditor 26 декабря 2014 г. 8:03
- Предложено в качестве ответа Vector BCOModerator 26 декабря 2014 г. 8:58
- Помечено в качестве ответа Trusilya 26 декабря 2014 г. 9:19
26 декабря 2014 г. 8:01Отвечающий -
Import-Csv .\test.csv -Delimiter ";" | foreach { $IP = $_.ip $Dir = $_.dir $Path = "$IP\$Dir" $Pass = $_.pass $Login = $_.Login net use Z: \\$IP\c$ /USER:$Login $Pass If (-Not (Test-Path -Path "Z:\$Dir\")) {new-item -path "Z:\$Dir" -itemtype directory} Copy-Item "F:\test.csv" -Destination "Z:\$Dir\" net use Z: /delete }
Проверенно на тестовой среде, и все отработало
Подсмотрено у Kazun
https://social.technet.microsoft.com/Forums/windowsserver/en-US/5428116d-ae66-4ad0-906d-6f8f7b31d688/copy-file-to-remote-computer-from-local-with-credentials-using-powershell?forum=winserverpowershel
при этом файл выглядит следующим образомIP;DIR;LOGIN;PASS
192.168.0.10;BASE;test\Administrator;Qwerty123
192.168.0.20;BASE;server1\Administrator;Qwerty123test\Administrator - доменная учетка
server1\Administrator - локальная учетка- Изменено Vector BCOModerator 28 декабря 2014 г. 21:38
- Помечено в качестве ответа Trusilya 29 декабря 2014 г. 11:32
28 декабря 2014 г. 21:37Модератор
Все ответы
-
домена нет?
Import-Csv .\name.csv -Delimiter ";" | foreach { $IP = $_.ip $Dir = $_.dir $Path = $IP\$Dir $Pass = $_.pass $Login = $_.Login $PWord = ConvertTo-SecureString $Pass –AsPlainText -Force $Cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $Login, $PWord If (-Not (Test-Path -Path "$Path" -Credential $Cred){ new-item -path $path -itemtype directory -Credential $Cred } Copy-Item C:\pornolib\topsecret.txt -Destination $Path -Credential $Cred }
Для справки
http://technet.microsoft.com/library/hh849815.aspx
(Пример 7)http://technet.microsoft.com/library/hh849793.aspx
(Пример 1 или 2)http://technet.microsoft.com/en-us/library/hh849776.aspx
(Пример 1)http://technet.microsoft.com/library/hh849795.aspx
(Пример 2)Проверить возможности нет но как то похоже должно заработать
Как вариант можно посмотреть так же сюда (по поводу авторизации наверное это удобнее)
http://technet.microsoft.com/en-us/library/hh849717.aspx
Что касается меню то его можно сделать так
http://technet.microsoft.com/en-us/library/ff730937.aspx
http://technet.microsoft.com/en-us/library/ff730939.aspx
- Изменено Vector BCOModerator 25 декабря 2014 г. 21:15
- Предложено в качестве ответа KazunEditor 26 декабря 2014 г. 7:52
- Помечено в качестве ответа Trusilya 26 декабря 2014 г. 9:18
25 декабря 2014 г. 20:11Модератор -
300 ПК находятся по всей России и в одной рабочей группе соединенной впн25 декабря 2014 г. 21:01
-
300 ПК находятся по всей России и в одной рабочей группе соединенной впн
сочувствую25 декабря 2014 г. 21:17Модератор -
Только Copy-Item не поддерживает параметр Credential, поэтому следует использовать New-PSDrive:
New-PSDrive -name X -psprovider FileSystem -root "\\$($_.IP)\$($_.Dir)" -Credential $cred Copy-Item C:\topsecret.txt -Destination X:\ Remove-PSDrive X -Force
-Credential<PSCredential>
This parameter is not supported by any providers installed with Windows PowerShell.
- Изменено KazunEditor 26 декабря 2014 г. 8:03
- Предложено в качестве ответа Vector BCOModerator 26 декабря 2014 г. 8:58
- Помечено в качестве ответа Trusilya 26 декабря 2014 г. 9:19
26 декабря 2014 г. 8:01Отвечающий -
Только Copy-Item не поддерживает параметр Credential, поэтому следует использовать New-PSDrive:
New-PSDrive -name X -psprovider FileSystem -root "\\$($_.IP)\$($_.Dir)" -Credential $cred Copy-Item C:\topsecret.txt -Destination X:\ Remove-PSDrive X -Force
-Credential<PSCredential>
This parameter is not supported by any providers installed with Windows PowerShell.
26 декабря 2014 г. 8:57Модератор -
Спасибо большое за помощь !
Сделал вот так :
Import-Csv "C:\PS\UPDATE\updatepc.csv" -Delimiter ";" | foreach { $IP = $_.ip $Dir = "\c$\Update" $Pass = "Qwerty756!" $Login = "Administrator" $PWord = ConvertTo-SecureString $Pass –AsPlainText -Force $Cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $Login, $PWord New-PSDrive -name B -psprovider FileSystem -root "\\$($_.IP)\c$\Update)" -Credential $cred Copy-Item "C:\PS\UPDATE\updatetestfile.txt" -Destination B:\ Remove-PSDrive X -Force }
Файл CSV
IP; 10.1.1.1;
Выдает ошибку:
C:\PS\upload_file_from_pc.ps1 New-PSDrive : Множественное подключение к серверу или к общим ресурсам одним пользователем с использованием более одного имени пользователя не разрешено. Отключите все предыдущие подключения к серверу или общим ресурсам и повторите попытку C:\PS\upload_file_from_pc.ps1:8 знак:7 + New-PSDrive -name B -psprovider FileSystem -root "\\$($_.IP)\c$\Update)" ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (B:PSDriveInfo) [New-PSDrive], Win32Exception + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand Copy-Item : Не удалось найти диск. Диск с именем "B" не существует. C:\PS\upload_file_from_pc.ps1:9 знак:7 + Copy-Item "C:\PS\UPDATE\updatetestfile.txt" -Destination B:\ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (B:String) [Copy-Item], DriveNotFoundException + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.CopyItemCommand Remove-PSDrive : Не удалось найти диск. Диск с именем "X" не существует. C:\PS\upload_file_from_pc.ps1:10 знак:7 + Remove-PSDrive X -Force + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (X:String) [Remove-PSDrive], DriveNotFoundException + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.RemovePSDriveCommand
Что не так делаю ?
Заранее благодарен !
26 декабря 2014 г. 9:17 -
New-PSDrive -name B-psprovider FileSystem -root "\\$($_.IP)\c$\Update)" -Credential $cred Copy-Item "C:\PS\UPDATE\updatetestfile.txt" -Destination B:\ Remove-PSDrive X -Force
Попробуйте во всех локациях использовать диск Х например- Изменено Vector BCOModerator 26 декабря 2014 г. 9:55
26 декабря 2014 г. 9:53Модератор -
Тоже самое тока в ошибке меняется диск26 декабря 2014 г. 10:01
-
Добавить команду: net use * /del /y26 декабря 2014 г. 10:13Отвечающий
-
Удалил все сетевые диски и ошибка этажа26 декабря 2014 г. 10:20
-
Import-Csv .\test.csv -Delimiter ";" | foreach { $IP = $_.ip $Dir = $_.dir $Path = "$IP\$Dir" $Pass = $_.pass $Login = $_.Login net use Z: \\$IP\c$ /USER:$Login $Pass If (-Not (Test-Path -Path "Z:\$Dir\")) {new-item -path "Z:\$Dir" -itemtype directory} Copy-Item "F:\test.csv" -Destination "Z:\$Dir\" net use Z: /delete }
Проверенно на тестовой среде, и все отработало
Подсмотрено у Kazun
https://social.technet.microsoft.com/Forums/windowsserver/en-US/5428116d-ae66-4ad0-906d-6f8f7b31d688/copy-file-to-remote-computer-from-local-with-credentials-using-powershell?forum=winserverpowershel
при этом файл выглядит следующим образомIP;DIR;LOGIN;PASS
192.168.0.10;BASE;test\Administrator;Qwerty123
192.168.0.20;BASE;server1\Administrator;Qwerty123test\Administrator - доменная учетка
server1\Administrator - локальная учетка- Изменено Vector BCOModerator 28 декабря 2014 г. 21:38
- Помечено в качестве ответа Trusilya 29 декабря 2014 г. 11:32
28 декабря 2014 г. 21:37Модератор -
Спасибо , обязательно проверю , отпишусь !
С Наступающим новым годом ! Всего Вам друзья самого лучшего !
29 декабря 2014 г. 9:59 -
Взаимно)29 декабря 2014 г. 10:18Модератор