如何使用UNCpath将文件复制到networking资源

我试图做一些非常简单的事情,从概念上说它应该起作用,但似乎没有,我不知道为什么。 我有一个文件,我需要复制到多个服务器上的多个文件夹。 我一直在寻找和尝试不同的解决scheme。 以下是我认为应该工作的内容:

$servers = @("\\server1.domain.com","\\server2.domain.com","\\server3.domain.com","\\server4.domain.com") $dests = @("\E$\path1","\E$\path2","\E$\path3","\E$\path4","\E$\path5") $file = "C:\Users\user\file.txt" foreach ($server in $servers) {net use $server /USER:domain\username password {foreach ($dest in $dests) {copy-item -Path $file -Destination $server$dest}}} 

其逻辑是,它会击中第一个foreach,得到第一个服务器名,做一个networking用来caching我的凭据在计算机上,击中第二个foreach,获取第一个path,然后将文件复制到第一个服务器上的第一个path,然后将文件复制到第一个服务器上的第二个path等等。在path的末尾,它将返回到第一个foreach,移动到第二个服务器上,然后遍历第二个服务器上的path列表,等等。

我见过类似的post,其他地方他们不使用第二个foreach,但我试过了,它不起作用,像这样:

 foreach ($server in $servers) {net use $server /USER:domain\username password {copy-item -Path $file -Destination $server$dest}}} 

谢谢你的帮助,任何人都可以给我这个。 我确定这是一件非常简单的事情,我只是想念。

使用networking资源文件系统和UNCpath时,应使用Powershell中的filesystem:: PSProvider。 这里有几个例子:

 Test-Path "filesystem::\\127.0.0.1\c$" Test-Path "filesystem::\\$env:computername\c$" 

调整这个过程到你的代码应该是这样简单的:

 foreach ($server in $servers){ net use $server /USER:domain\username password foreach ($dest in $dests){ copy-item -Path $file -Destination "filesystem::$server$dest" }#End foreach ($dest in $dests) }#End foreach ($server in $servers) 

请记住,作为一名PowerShell专业人员,您的代码应尽可能轻松阅读。 和所有的专业写作一样,风格也很重要。

另外,你应该考虑使用Get-Credential来使用用户名/密码,所以你不用纯文本写它们。