PowerShell FTPS 上传失败并显示“系统错误”。

2023-12-03

问题:

客户要求我们将从系统中提取的数据上传到他们的 box.com 平台,而不是我们普通的 SFTP 实用程序。我有 box.com 凭据,并且知道他们需要 FTPS 而不是 SFTP,并且需要被动模式。我抄袭了一个片段ThomasMaurer 的 Powershell FTP 上传和下载脚本。我的服务器上的Powershell版本是4.0

代码片段为:

#config 
$Username = "[email protected]"
$Password = "redactedpassword"
$LocalFile = "C:\path\to\my\file.csv"
$RemoteFile = "ftp://ftp.box.com:990/file.csv"
#Create FTPWebRequest
$FTPRequest = [System.Net.FtpWebRequest]::Create($RemoteFile)
$FTPRequest = [System.Net.FtpWebRequest]$FTPRequest
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $true
#read file for upload
$FileContent = gc -en byte $LocalFile
$FTPRequest.ContentLength = $FileContent.Length
#get stream request by bytes
$run = $FTPRequest.GetRequestStream()
$run.Write($FileContent,0,$FileContent.Length)
#cleanup
$run.Close()
$run.Dispose()

错误:

Exception calling "GetRequestStream" with "0" argument(s): "System error." At C:\path\to\my\powershellscript.ps1:28 char:1
+ $Run = $FTPRequest.GetRequestStream()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: () [], MethodInvocationException
+ FullyQualifiedErrorId: WebException

我在调用时也遇到下游错误$FileContent.Length财产和$run.close and $run.dispose().

有没有人仅使用 PowerShell 4.0 命令成功地自动化框(具体而言)或被动隐式 ssl,您是否有一个可以重复使用的可靠模式?非常感谢


我正在上传带有派生版本的文件系统.Net.WebClient,支持基于 TLS 的 FTP。这可以通过在 PowerShell 中嵌入 C# 代码轻松实现:

$typeDefinition = @"
using System;
using System.Net;
public class FtpClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        FtpWebRequest ftpWebRequest = base.GetWebRequest(address) as FtpWebRequest;
        ftpWebRequest.EnableSsl = true;
        return ftpWebRequest;
    }
}
"@

Add-Type -TypeDefinition $typeDefinition
$ftpClient = New-Object FtpClient
$ftpClient.UploadFile("ftp://your-ftp-server/yourfile.name", "STOR", "C:\YourLocalFile.name")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell FTPS 上传失败并显示“系统错误”。 的相关文章

随机推荐

  • 将系统调用事件跟踪输出的格式更改为 ftrace

    我启用了 ftrace 事件跟踪sys enter openat系统调用 各自的输出格式给出events syscalls sys enter openat format is print fmt dfd 0x 08lx filename
  • 为什么像“矩形”和“线条”这样的绘图命令会忽略“推迟”?

    我试图在循环中显示一个变化的矩形 并暂停 并且它忽略了延迟 实际上应该是默认的 这是简化版本的代码 clc close all clear all rect 10 10 20 30 figure axis 0 200 0 50 for i
  • 为什么我的系统库和框架在 macOS Monterey 中不可见?

    我在刚刚构建的 dylib 上使用 otool L 检查了一些依赖关系 并得到了以下系统依赖关系 System Library Frameworks Accelerate framework Versions A Accelerate co
  • 用纯Python控制游戏控制器的振动电机?

    我买了一个带有振动电机的标准游戏控制器 它自称为 SHANWAN Android Gamepad 但似乎与其他游戏兼容 因为它在 Linux 上开箱即用 运行良好 我找到了一个脚本 使我能够从游戏控制器设备路径读取数据https gist
  • array_udiff 似乎不起作用

    我试图用 array udiff 比较两个数组 但这很奇怪 看来 array udiff 没有得到正确的答案 这里是现场演示 结果应该是一个空数组 但保留一个未过滤的元素
  • 使用 C# 在 Windows 应用程序中从一种表单检索值到另一种表单 [重复]

    这个问题在这里已经有答案了 我有一个登录表单和更改密码表单 我想检索登录时在登录表单中输入的用户名值 我创建了一个名为 RetUserName 的属性 如下所示 public partial class frmLogin Form priv
  • 在 $bind_param() 中动态绑定参数; mysqli

    我有 DB 类 它处理将对数据库进行的所有查询 我的 mysqli 准备工作正常 bind param 也工作正常 但问题是我想动态定义变量类型 这是我的代码 public function query sql params array t
  • Android File.listFiles 不显示目录内的所有文件

    我正在使用 Android Emulator 2 2 版本来开发一个小应用程序 我应该列出目录下的所有图像文件 jpg 文件 我通过 ADB puash 命令将文件复制到 data 示例 data 1 jpg 现在 我创建一个 File 对
  • php switch 语句 int = 0 时出错

    我在 php switch case 中遇到问题 当我设置 数字 0它应该首先运行case但这里代码返回10 20K这是第二种情况 我检查了比较运算符 在 if else 情况下测试了它们 它们返回正确的值 但这里第一种情况不运行 数字 0
  • 浮点运算:误差求和与乘法

    我试图理解这个简单示例背后的浮点运算 理论上 这两种代码在算术上是等价的 但显然一系列加法比简单的乘法增加了更多的错误 s 0 0 for i in range 10 s 0 1 print s print 30f s 0 99999999
  • 使用 VarArgs 隐式定义

    我刚刚注意到implicit def似乎在 var args 中不起作用 例如 我有一个java函数 它需要java lang Byte 作为其参数输入 该函数调用被一个 scala 方法包围 该方法采用scala Byte implici
  • 这种即发即忘的方法正确吗?

    我已经实施了Instagram API 实时更新 基本上 当根据我的订阅添加新图像时 它们会向我提供的 url 发出 POST 请求 他们说 您应该在 2 秒超时内确认 POST 如果您需要对收到的信息进行更多处理 您可以在异步任务中执行此
  • 将反应表行数据传递给反应模式

    作为 React 新手 我很难将数据从反应表传递到 编辑 模式 并且似乎无法找到类似问题的解决方案 数据通过 Axios API 调用从数据库中获取并呈现在反应表中 我需要将渲染行的数据传递到模式 以便随后发出放置请求并将数据更新到服务器
  • Groovy 子类调用访问闭包的超类方法

    我有一个很棒的超类 如下所示 class AGroovyClass private String str hello void printString int nTimes nTimes times println str 和子类 clas
  • mac os jdk 1.8 问题 vlc 控制 JAWT 无法加载

    JavaVM WARNING JAWT GetAWT must be called after loading a JVM Exception in thread AWT EventQueue 0 java lang Unsatisfied
  • 使用 MySQL C API - 使用准备好的语句检查插入行是否成功

    我开始学习如何使用 MySQL C API 并遇到了准备好的语句 我以前没有在其他语言中使用过这些 所以这对我来说都是新的 我在网上查了一下 我已经弄清楚如何使用准备好的语句从SELECT查询 现在我想做的是INSERT一些数据 看看是否成
  • 返回与值部分匹配的记录

    我正在尝试让查询工作 该查询从表单控件获取值 有时只是字符串的第一部分 我遇到的问题是 它仅在输入完整字符串时返回记录 即在姓氏框中 我应该能够输入 gr 它会显示 绿色的 灰色的 格雷厄姆 但目前除非使用完整的搜索字符串 否则它不会显示任
  • 在 Ruby 中发出超时的 HTTP HEAD 请求

    在 Rails 应用程序中 我想对资源 用户提供的 URL 发出 HTTP HEAD 请求 以确保它存在 我还想要一个超时 以确保该方法在花费合理的等待时间后失败 实现此目的最直接的方法是什么 如果可能 使用标准库 试试这个片段 requi
  • 使用 A* 的启发式方法来查找增益最高的路径

    假设我想改变 A 中的逻辑 试图找到最有用的路径 即增益最高的路径 而不是找到最短路径 即成本最低的路径 就我而言 目标并不固定为唯一的结束节点 节点定义为具有距离的任何节点B从起点开始 在普通版本 找到最短路径 中 我需要不要高估成本 即
  • PowerShell FTPS 上传失败并显示“系统错误”。

    问题 客户要求我们将从系统中提取的数据上传到他们的 box com 平台 而不是我们普通的 SFTP 实用程序 我有 box com 凭据 并且知道他们需要 FTPS 而不是 SFTP 并且需要被动模式 我抄袭了一个片段ThomasMaur