NET USE仅在powershell中运行一次

时间:2012-06-12 10:39:31

标签: powershell

我的要求是连接到远程计算机,将扩展名为.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++
        }

3 个答案:

答案 0 :(得分:7)

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

 Set-Location  FILESYSTEM::Z:

答案 1 :(得分:5)

有同样的问题。通过添加修补我的矿 * New-PSDrive z FileSystem z:* NET使用之后。似乎NET USE / DELETE扰乱了PS管家。

答案 2 :(得分:1)

试试这个,也许吧:

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("Z:", "\\$arr\Exchange", $false, "admin", "password")