PowerShell Foreach L oop с переменной для учетных записей пользователей для копирования файла - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь скопировать файл в список папок пользователей на сетевом ресурсе, используя foreach l oop и переменную, содержащую все имена пользователей. Это то, что я сделал до сих пор без успеха. Я понимаю , почему это не работает (загрузка всех имен пользователей одновременно в переменную), но я не уверен, что нужно сделать, чтобы исправить это, или если foreach l oop - лучший путь , Я перепробовал много вариантов из приведенного ниже и много гуглил.

$whusers = "username1", "username2", "username3"

Foreach ($user in $whusers) {
xcopy "C:\users\myname\desktop\shortcut.url" "F:\corp users\$whusers\desktop" }

Любая помощь будет с благодарностью!

Ответы [ 2 ]

3 голосов
/ 22 февраля 2020

При использовании ForEach l oop вы перебираете все элементы 2-й переменной и по очереди помещаете их в первую. Внутри ForEach вы должны ссылаться на переменную first , а не на вторую. Измените $whusers внутри вашего ForEach на $user$.

Попробуйте:

$whusers = "username1","username2","username3"

Foreach ($user in $whusers) {
    xcopy "C:\users\myname\desktop\shortcut.url" "F:\corp users\$user\desktop"
}
0 голосов
/ 22 февраля 2020

Даже это можно сделать с помощью переменной $ user. ForEach используется для перебора массива. Если объект для перебора передается по конвейеру в качестве входных данных, существует специальная переменная $ _, которая будет действовать каждый раз как элемент массива.

$whusers = "username1", "username2", "username3"

$whusers | ForEach {
xcopy "C:\users\myname\desktop\shortcut.url" "F:\corp users\$_\desktop" 
}
...