【发布时间】:2014-05-11 10:38:54
【问题描述】:
我正在尝试编写一个 Powershell 脚本,该脚本将在我的桌面上读取一个填充了用户名的文本文件,然后转到我们网络共享上的指定文件夹,比如说 u:\data 并从中复制内容对于文本文件中的每个用户,文件夹到另一个网络共享让我们说 y:\information。
这要怎么写?
我已经尝试了几件事来读取文本文件,然后尝试了几个命令来复制和粘贴,但它们都失败了。
更新:
以下是我目前所做的:
$user = Get-Content "test.txt"
$path = "\\abnas2\abusers\users"
$path2 = "\\abnas2\abdept\dept\testcopy"
$Copy = Copy-Item -path $path\$user\ * -Destination $path2\$user
我在 test.txt 文件中有一个名为 user1 的用户名,它提取了该名称,并完美复制。
现在,如果我在 test.txt 文件中添加多个名称并运行上述内容,则会出错。它返回的错误使它看起来像列表中的 3 个用户名是一个用户名。
我需要做的是为列表中的每个名称运行命令。我在想我可以使用foreach 命令但不知道该怎么做。
更新 - 04\09\2014: 我尝试了以下方法并收到错误消息: $user = 获取内容“test.txt” $path = "\abnas2\abusers\users" $path2 = "\abnas2\abdept\dept\testcopy" $Copy = Copy-Item -path $path\$user* -Destination $path2\$user foreach($user 中的 $username) { 复制项目 -path $path\$username* -Destination $path2\$username\ }
当我运行它时,我收到以下错误: Copy-Item : 指定路径 \\abnas2\abusers\users\user1 user2 user3 的对象不存在。
这些是我的 test.txt 文件中的名称,有没有办法让它一次读取一行并执行复制,完成后转到列表中的下一个名称并执行相同操作?我不知道如何让它做到这一点。
【问题讨论】:
-
向我们展示您的尝试。
-
我对 powershell 很陌生,只测试了一些东西,例如 get content 命令和 copy from and to 命令。我想知道你是否可以给我一个它可能是什么样子的样本
-
“我已经尝试了几件事来读取文本文件,然后尝试了几个命令来复制和粘贴,但它们都失败了。” - 选择一项任务。从读取文件开始。如果您在编码时遇到特定问题,请发布有关它的问题以及您尝试过的内容和结果。把它排序,然后继续下一点。
-
您在使用
Get-Content和Copy-Item时可能走在正确的轨道上。如果您可以解释您尝试过的内容(通过显示和解释脚本)以及您在这些尝试中观察到的错误(例如异常消息、其他不是预期结果的结果),那么为您提供帮助会容易得多. -
"这个怎么写?" - 应该写成
for /f %%f in (usernames.txt) do (RoboCopy "U:\data\%%f" Y:\Information /E /COPYALL /DCOPY:T,或者你可以在 PowerShell 中重新发明轮子,我猜。
标签: powershell