带有用于用户帐户复制文件的变量的PowerShell Foreach循环

问题描述 投票:0回答:2

我正在尝试使用foreach循环和包含所有用户名的变量将文件复制到网络共享上的用户文件夹列表中。到目前为止,这是我迄今为止没有做过的事情。我知道为什么不能正常工作(一次将所有用户名加载到变量中),但是我不确定该如何纠正它,或者不确定是否foreach循环是最好的选择。我已经尝试了以下内容的多种变体,并且做了很多谷歌搜索。

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

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

任何帮助将不胜感激!

powershell foreach robocopy xcopy
2个回答
2
投票

使用ForEach循环时,您要遍历第二个变量的所有元素,并将它们依次放入第一个变量中。在ForEach内部,必须引用first变量,而不是第二个。将ForEach内部的$whusers更改为$user$。我还想显式定义我的数组,可以使用变量的[array]前缀,也可以像在下面的代码片段中那样用数组名称@()包围数据。

尝试一下:

$whusers = @("username1","username2","username3")

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

0
投票

即使使用$ user变量也可以完成此操作。 ForEach用于遍历数组。如果将要迭代的对象作为输入管道传递,则有一个特殊变量$ _每次都用作数组的元素。

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

$whusers | ForEach {
xcopy "C:\users\myname\desktop\shortcut.url" "F:\corp users\$_\desktop" 
}
© www.soinside.com 2019 - 2024. All rights reserved.