看起来你正在尝试使用PowerShell远程复制文件。正如其他答案中发布的那样,更简单的方法是使用Copy-Item
和/或Robocopy从源计算机复制到目标计算机上的共享。
如果你想使用PowerShell远程复制文件,你可以将文件读入变量中,并在远程脚本块中使用它。就像这样:
$contents = [IO.File]::ReadAllBytes( $localPath )
Invoke-Command -ComputerName <IP Address> `
-Credential $credential `
-ScriptBlock { [IO.File]::WriteAllBytes( 'C:\remotepath', $using:contents ) }
当然,如果你要读取的文件非常大,这可能导致远程连接因为内存不足而崩溃(默认情况下,PowerShell将远程连接限制在128MB左右)。
如果你必须使用PowerShell 2,则需要将字节作为脚本块参数传递。
$contents = [IO.File]::ReadAllBytes( $localPath )
Invoke-Command -ComputerName <IP Address> `
-Credential $credential `
-ScriptBlock {
param(
[byte[]]
$Contents
)
[IO.File]::WriteAllBytes( 'C:\remotepath', $Contents)
} `
-ArgumentList @( ,$contents )
是的,当将$contents
作为值传递给-ArgumentList
参数时,您必须将其包装在数组中,并且必须使用逗号运算符,
作为前缀,否则您的远程脚本块只会接收到第一个字节。
New-PSDrive
代替net use
。 - alroc