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

.net 如何使用PowerShell中的凭据从本地复制到远程位置?,.net,powershell,powershell-3.0,.net,Powershell,Powershell 3.0,我是PowerShell的新手 我有用户名和密码可以访问远程位置的共享文件夹 我需要将文件foo.txt从当前位置复制到为Powershell v3.0编写的PS1脚本中的\\Bar.foo.myCOmpany.com\logs 如何实现这一点?您可以尝试: copy-item -path .\foo.txt -destination \remoteservername\logs -credential (get-credential) 我会利用比特。后台智能传输服务 如果您的会话未实现Bi

我是PowerShell的新手

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

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

如何实现这一点?

您可以尝试:

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

我会利用比特。后台智能传输服务

如果您的会话未实现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

获取有关启动BitsTransfer的帮助:

语法

 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>]

复制项目不支持-credential参数,此参数不显示 但任何Windows PowerShell核心cmdlet或提供程序都不支持此功能“

您可以尝试以下函数来映射网络驱动器并调用copy

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"

远程位置是网络共享或ftp文件夹?但我在哪里传递用户名和密码?
获取凭据
打开一个窗口以输入用户名和密码。是否需要从文件中读取它们?阅读此内容以便回答:对于我需要的meDo,这只会给出一个错误“文件系统提供程序仅支持新PSDrive cmdlet上的凭据”要在与目标服务器的连接之前和/或之后关闭连接?我在浏览网络时发现有必要关闭连接?无论如何,我在尝试此操作时出错:错误消息:文件系统提供程序仅支持New-PSDrive cmdlet上的凭据。请在不指定凭据的情况下再次执行此操作。.Exception.Message,第1行:char:1hi try-it now Copy项不支持-credential参数,该参数会出现,但任何Windows PowerShell核心cmdlet或提供程序都不支持该参数“我们可以映射网络驱动器并使其正常工作,请尝试让我知道
Copy-FooItem -username "powershell-enth\vinith" -password "^5^868ashG"