首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PSSession下载PS<5文件

通过PSSession下载PS<5文件
EN

Stack Overflow用户
提问于 2018-04-10 13:19:45
回答 1查看 523关注 0票数 2

如何通过PSSession从远程服务器下载文件?我知道PS5引入了Copy-Item -FromSession,但是本地和远程都可能没有运行PS5。我的文件也很大,所以一个简单的Get-Content可能会有问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-10 16:32:24

您可以将远程端的文件读取为字节数组序列,通过远程处理将其流,然后将它们组装回本地文件:

代码语言:javascript
复制
function DownloadSingleFile {
    param(
        [System.Management.Automation.Runspaces.PSSession] $FromSession,
        [string] $RemoteFile,
        [string] $LocalFile,
        [int] $ChunkSize = 1mb
    )
    Invoke-Command -Session $FromSession -ScriptBlock {
        param(
            [string] $FileName,
            [int] $ChunkSize
        )
        $FileInfo = Get-Item -LiteralPath $FileName
        $FileStream = $FileInfo.OpenRead()
        try {
            $FileReader = New-Object System.IO.BinaryReader $FileStream
            try {
                for() {
                    $Chunk = $FileReader.ReadBytes($ChunkSize)
                    if($Chunk.Length) {
                        ,$Chunk
                    } else {
                        break;
                    }
                }
            } finally {
                $FileReader.Close();
            }
        } finally {
            $FileStream.Close();
        }
    } -ArgumentList $RemoteFile, $ChunkSize | ForEach-Object {
        $FileName = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($LocalFile)
        $FileStream = [System.IO.File]::Create($FileName)
    } {
        $FileStream.Write($_, 0, $_.Length)
    } {
        $FileStream.Close()
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49754758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档