如何使用PowerShell中的凭据从本地复制到远程位置?

时间:2012-11-05 19:56:30

标签: .net powershell powershell-v3.0

我是PowerShell的新手。

我有用户名和密码来访问远程位置的共享文件夹。

我需要将文件foo.txt从当前位置复制到为 Powershell v3.0 编写的PS1脚本中的 \\Bar.foo.myCOmpany.com\logs

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

我会使用BITS。后台智能转移服务。

如果您的会话没有实施BitsTransfer模块:

Import-Module BitsTransfer

使用它来使用凭据传输文件的示例:

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

警告:如果您在RemotePS会话中执行脚本,则BITS NOT 支持。

Get-Help for Start-BitsTransfer:

SYNTAX

 Start-BitsTransfer [-Source] <string[]> [[-Destination] <string[]>] [-Asynchronous] [-Authentication <string>] [-Credential <PS
Credential>] [-Description <string>] [-DisplayName <string>] [-Priority <string>] [-ProxyAuthentication <string>] [-ProxyBypass
 <string[]>] [-ProxyCredential <PSCredential>] [-ProxyList <Uri[]>] [-ProxyUsage <string>] [-RetryInterval <int>] [-RetryTimeou
t <int>] [-Suspended] [-TransferType <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

更多帮助......

这是创建$ cred对象的脚本,因此不会提示您输入username / passwod:

    #create active credential object
    $Username = "user"
    $Password = ConvertTo-SecureString ‘pswd’ -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential $Username, $Password

答案 1 :(得分:4)

Copy-Item不支持-credential参数,这会显示参数 但在任何Windows PowerShell核心cmdlet或提供程序“

中都不支持它

您可以尝试以下功能来映射网络驱动器并调用副本

Function Copy-FooItem {

param(
        [Parameter(Mandatory=$true,ValueFromPipeline=$True)]
        [string]$username,
        [Parameter(Mandatory=$true,ValueFromPipeline=$True)]
        [string]$password
        )

$net = New-Object -com WScript.Network
$drive = "F:"
$path = "\\Bar.foo.myCOmpany.com\logs"
if (test-path $drive) { $net.RemoveNetworkDrive($drive) }
$net.mapnetworkdrive($drive, $path, $true, $username, $password)
copy-item -path ".\foo.txt"  -destination "\\Bar.foo.myCOmpany.com\logs"
$net.RemoveNetworkDrive($drive)

}

以下是如何运行该功能只需更改用户名和密码的参数

Copy-FooItem -username "powershell-enth\vinith" -password "^5^868ashG"

答案 2 :(得分:1)

您可以尝试:

copy-item -path .\foo.txt  -destination \remoteservername\logs -credential (get-credential)