3

我的要求是连接到远程计算机,将扩展名为 的文件复制.TRA到另一台远程计算机。

现在我的困难在于源机器不在域中,所以我需要使用备用凭据进行连接。

我的第一个症结是尝试使用New-PSDrive. 它似乎不允许我传递存储的凭据。我试过这个的各种版本:

$cred = Get-Credential
New-PSDrive -NAME Z: -PSprovider Filesystem -root \\Computer\Exchange -credentials $cred

我得到一个错误

提供程序不支持使用凭据。在不指定凭据的情况下再次执行该操作。

这似乎是一个错误(请参阅 halr9000 的评论:Connecting to a network folder with username/password in Powershell

我的替代方法是使用NET USE,它工作正常但只有一次。

在下面的完整脚本中,我映射到 8 台不同的机器。这些作品中的第一个。之后,任何尝试使用NET USE(或New-Object WScript.NETWORK在上面链接的 Technet 文章中提到的解决方法)都会失败。或者更确切地说,它不会失败。

它创建了一个映射驱动器,我可以看到我是否键入NET USE,或者如果我查看资源管理器(及其可浏览)。但我无法在 Powershell 中连接到该驱动器。它就像它不存在一样,Test-Path Z:返回 False。直到我运行NET USE Z: /D成功删除驱动器。

有人可以帮我解决我的一个或其他问题吗?不要让我在 DOS 中这样做!

完整脚本:

$int = 0
$arrStagePC = "BOX42", "BOX43", "BOX44", "BOX45", "BOX46", "BOX47", "BOX48", "BOX49" 
$arrData = "0848","5144","5292","5383","2158","2646","0061","2331"
Foreach($strComp in $arrStagePC)
    {
    $arr = $arrData[$int]
    $comp = $strComp
    net use z: \\$arr\Exchange /user:admin password
    Copy-Item z:\*$date.tra \\$comp\Export$
    net use z: /d
    $int++
    }

编辑 看看下面@Christians 接受的答案。我实际上并不需要 Get-Content 那个文件夹,我只需要从源中复制数据,因此在那里进行业务的脚本部分现在看起来像:

Foreach($strComp in $arrStagePC)
        {
        $arr = $arrData[$int]
        $comp = $strComp
        net use z: \\$arr\Exchange /user:admin password
        Copy-Item FILESYSTEM::Z:\*.TRA \\$comp\Export$
        net use z: /d
        $int++
        }
4

3 回答 3

7

使用 NET USE 尝试以这种方式访问​​:

 Set-Location  FILESYSTEM::Z:
于 2012-06-12T10:50:44.490 回答
5

有同样的问题。通过在 NET USE 之后添加 *New-PSDrive z FileSystem z:* 来修复我的问题。似乎 NET USE /DELETE 扰乱了 PS 家务。

于 2012-11-03T23:51:17.027 回答
1

试试这个,也许:

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("Z:", "\\$arr\Exchange", $false, "admin", "password")
于 2012-06-12T10:46:55.223 回答