Скопировать файл из общего сетевого ресурса на все рабочие столы пользователей Windows на всех компьютерах сети

По сути, я хотел бы сделать что-то вроде этого (используя командную строку просто для наглядного примера, с удовольствием попробую PowerShell/VBScript/ другие методы программирования)...

xcopy "\\thisserver\share\something.txt" "\\computer1\c$\users\dude\Desktop\*.*" /Y
xcopy "\\thisserver\share\something.txt" "\\computer2\c$\users\dudeette\Desktop\*.*" /Y
...

На самом деле, если бы я мог сделать шаг вперед к простому коду, я бы хотел сделать что-то вроде этого:

xcopy "\\thisserver\share\something.txt" "\\computer1\c$\*\*\Desktop\*.*" /Y
xcopy "\\thisserver\share\something.txt" "\\computer2\c$\*\*\Desktop\*.*" /Y

Я знаю, что это неправильно закодировано, но по сути я хотел бы скопировать файл (точнее, файл.vbs) из легкодоступного сетевого расположения во все настольные расположения пользователей Windows (c:\users) на всех сетевых компьютерах в нашем домен.

Любая помощь очень ценится! Если вручную - единственный вариант, то я думаю, что так оно и есть.

2 ответа

Решение

В домене было бы намного проще использовать предпочтения групповой политики для развертывания файлов на рабочих столах пользователей.

GPP для развертывания файлов

Нажмите F3 с курсором в поле ввода " Файл назначения", чтобы получить список доступных переменных.

Если вы хотите попробовать PowerShell:

  • создайте текстовый файл, содержащий список всех путей назначения, подобный этому:

E: \ share \ Paths.txt:

\\computer1\c$\users\dude\Desktop
\\computer2\c$\users\dudeette\Desktop

,

В PowerShell:

ForEach ( $destination in Get-Content -Path 'E:\share\Paths.txt' )
{
    mkdir $destination -Force
    Copy-Item -LiteralPath 'E:\share\something.txt' -Destination "$destination\something.txt" -Force
}

,

Заметки:

- I only tested this on the local drives

- if all destination folders exist: comment out "mkdir $destination -Force"
  (place a "#" before the line: "# mkdir $destination -Force")

- if destination paths contain spaces place this line above "mkdir" line
  $destination = $destination.Replace("`"", "`'")

- I didn't test paths with spaces either

- You can rename destination file to "somethingElse.txt" in the "Copy-Item" line:
  ... -Destination "$destination\somethingElse.txt" -Force

,

Итак, версия 2:

ForEach ( $destination in Get-Content -Path 'E:\Paths.txt' )
{
    $destination = $destination.Replace("`"", "`'")
    # mkdir $destination -Force
    Copy-Item -LiteralPath 'E:\share\something.txt' -Destination "$destination\somethingElse.txt" -Force
}
Другие вопросы по тегам