none
Автоматическая загрузка файлов RRS feed

  • Вопрос

  • Здравствуйте 

    Есть 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
    Модератор
  • 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.




    http://technet.microsoft.com/library/hh849793.aspx

    тут написано что параметр есть. но спорить не буду

    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

    Попробуйте во всех локациях использовать диск Х например
    26 декабря 2014 г. 9:53
    Модератор
  • Тоже самое тока в ошибке меняется диск 
    26 декабря 2014 г. 10:01
  • Добавить команду: net use * /del /y
    26 декабря 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;Qwerty123

    test\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
    Модератор