我是 PowerShell 的新手。
我有用户名和密码可以访问远程位置的共享文件夹。
我需要将文件foo.txt
从当前位置复制到为 Powershell v3.0\\Bar.foo.myCOmpany.com\logs
编写的 PS1 脚本中。
我怎样才能做到这一点?
我是 PowerShell 的新手。
我有用户名和密码可以访问远程位置的共享文件夹。
我需要将文件foo.txt
从当前位置复制到为 Powershell v3.0\\Bar.foo.myCOmpany.com\logs
编写的 PS1 脚本中。
我怎样才能做到这一点?
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"
我会使用 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。
获取 Start-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>]
更多帮助...
这是创建 $cred 对象的脚本,因此不会提示您输入用户名/密码:
#create active credential object
$Username = "user"
$Password = ConvertTo-SecureString ‘pswd’ -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $Username, $Password
您可以尝试:
copy-item -path .\foo.txt -destination \remoteservername\logs -credential (get-credential)