当前位置:  开发笔记 > 编程语言 > 正文

copy-item With Alternate Credentials

如何解决《copy-itemWithAlternateCredentials》经验,为你挑选了5个好方法。

我正在使用powershell v2的CTP.我写了一个脚本,需要在我们的dmz中找到各种网络共享并复制一些文件.但是,我遇到的问题显然是powershell的cmdlet,如copy-item,test-path等,不支持备用凭据......

有人建议如何最好地完成我的任务..?



1> chills42..:

我最近遇到过这种情况,在Powershell的最新版本中有一个新的BitsTransfer模块,它允许使用BITS进行文件传输,并支持使用-Credential参数.

以下示例显示如何使用BitsTransfer模块使用指定的PSCredential对象将文件从网络共享复制到本地计算机.

Import-Module bitstransfer
$cred = Get-Credential
$sourcePath = \\server\example\file.txt
$destPath = C:\Local\Destination\
Start-BitsTransfer -Source $sourcePath -Destination $destPath -Credential $cred

另一种处理方法是使用标准的"net use"命令.但是,此命令不支持"securestring"密码,因此在获取凭证对象后,您必须获取密码的解密版本以传递给"net use"命令.

$cred = Get-Credential
$networkCred = $cred.GetNetworkCredential()
net use \\server\example\ $networkCred.Password /USER:$networkCred.UserName
Copy-Item \\server\example\file.txt C:\Local\Destination\


另请注意,这不适用于像`\\ server\C $`这样的位置.见http://serverfault.com/q/512558/172060.

2> wes..:

由于PowerShell不支持通过许多cmdlet使用"-Credential"(非常烦人),并且通过WMI映射网络驱动器在PS中证明非常不可靠,我发现通过net use命令预先缓存用户凭据工作得很好:

# cache credentials for our network path
net use \\server\C$ $password /USER:$username

在路径中使用\\ server\C $的任何操作似乎都使用*-item cmdlet.

您还可以在完成后删除共享:

net use \\server\C$ /delete



3> Santosh Pand..:

PowerShell 3.0现在支持FileSystem提供程序上的凭据.要使用备用凭据,只需使用New-PSDrive cmdlet上的Credential参数

PS > New-PSDrive -Name J -PSProvider FileSystem -Root \\server001\sharename -Credential mydomain\travisj -Persist

在此命令之后,您现在可以访问新创建的驱动器并执行其他操作,包括复制或移动文件,如普通驱动器.这是完整的解决方案:

$Source = "C:\Downloads\myfile.txt"
$Dest   = "\\10.149.12.162\c$\skumar"
$Username = "administrator"
$Password = ConvertTo-SecureString "Complex_Passw0rd" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential($Username, $Password)

New-PSDrive -Name J -PSProvider FileSystem -Root $Dest -Credential $mycreds -Persist
Copy-Item -Path $Source -Destination "J:\myfile.txt"



4> x0n..:

这是一个老问题,但我只是为将来的发现者更新它.

PowerShell v3现在支持使用-Credential参数进行文件系统操作.

希望这有助于其他人寻找相同的解决方案.


似乎只有文件系统提供程序的New-PsDrive支持`-credential`参数.在v3 stil上使用`copy-item`不起作用.

5> Shay Levy..:

我会尝试将驱动器映射到远程系统(使用'net use'或WshNetwork.MapNetworkDrive,两种方法都支持凭据),然后使用copy-item.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有