Скопировать файл из общего сетевого ресурса на все рабочие столы пользователей 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 ответа
В домене было бы намного проще использовать предпочтения групповой политики для развертывания файлов на рабочих столах пользователей.
Нажмите 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
}