将单个文件复制到多个目录[如果存在则覆盖]

时间:2014-02-27 22:53:13

标签: powershell active-directory

我正在尝试编写一个脚本,该脚本将从一个网络位置复制文件,然后将其复制到用户漫游配置文件列表中[也在网络共享上]。用户输入csv作为输入。

漫游配置文件位于\ fs-11 \ profiles [name] \ AppData \ Roaming \

cls
$input = Import-csv "\\fs-12\temp\input.csv"
$source = "\\fs-12\temp\filename.txt"

Function copyFile {
    Param( [string] $_username )
    Copy-Item -path $source -Destination "\\fs-11\profiles\"$_username"\AppData\Roaming\" -Force
    write-host ("filename.txt written to "$_username"'s profile")
}

foreach ($user in $input) {
    copyFile $user.username
}

这引发了以下......

错误:意外的令牌' _username'在表达或陈述中。 copy2.ps1(10):错误:在行:10个字符:51 错误:+写主机(" System.mdw写入" $ _用户名<<<<"'''''''' 错误:+ CategoryInfo:ParserError:(_ username:String)[],ParseException 错误:+ FullyQualifiedErrorId:UnexpectedToken ERROR:

2 个答案:

答案 0 :(得分:3)

您正在终止字符串并重新打开它。你必须用反引号字符“转义”双引号。

更改此行:

write-host ("filename.txt written to "$_username"'s profile")

到此:

write-host ("filename.txt written to `"$_username`"'s profile")

答案 1 :(得分:1)

只需从$ _username变量周围取出引号并删除括号,如下所示:

write-host "filename.txt written to $_username's profile"