Powershell 以真实格式下载文本文件

Powershell 以真实格式下载文本文件

你好,我正在尝试使用 Powershell 下载文本文件调用 Web 请求方法

Invoke-WebRequest http://www.example.org/script.txt -Outfile DL_script.txt

script.txt 的内容

cls
@echo off
 ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
  ECHO args = "ELEV " >> "%vbsGetPrivileges%"
  ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
  ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
  ECHO Next >> "%vbsGetPrivileges%"

  if '%cmdInvoke%'=='1' goto InvokeCmd 

  ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  goto ExecElevation

但下载后..文件看起来像这样(所有代码都在一行中,没有换行符)我如何下载真实格式的文件以便运行脚本

cls@echo offECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"ECHO args = "ELEV " >> "%vbsGetPrivileges%"ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"ECHO Next >> "%vbsGetPrivileges%" if '%cmdInvoke%'=='1' goto InvokeCmd  ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
goto ExecElevation

我需要一个单行命令用于下载真实格式的脚本。尝试了这些方法但输出相同(所有内容都在一行中

# Method 1:
Invoke-WebRequest $url -OutFile $path_to_file

# Method 2:
(New-Object System.Net.WebClient).DownloadFile($url, $path_to_file)

# Method 3 (requires BITS may not be immediate):
Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $path_to_file

答案1

至于这个...

我需要一个单行命令来下载脚本

... 与 Ramhound 所述一致,但在 PowerShell 中,单行(管道)命令之间存在差异......

SendCommand1 | ReceiveCommand...

...,并且管道中的命令必须支持管道输入,然后所有代码都在一行上。

SomeCodedCommand;SomeOtherCodedCommand

分号表示每个块都独立于其他块。

第 4 章 - 单行代码和管道

什么是 PowerShell One-Liner 和非 PowerShell One-Liner?

文件在下载时的呈现方式可能与文件提供者有关,而不一定与 PowerShell 有关。

确定这一点的方法之一是不下载,而只是检查网站页面提供的内容。使用浏览器开发人员工具访问该网站,看看那里有什么。

因为我们无权访问你正在使用的文件(顺便说一下,这看起来很可疑)通过您正在显示的网站,您应该尝试另一个网站和文本文件进行验证。

例如,该站点的文本文件在我的一个独立测试系统上按预期运行。

$url = 'https://lists.evolt.org/archive/Week-of-Mon-20020408.txt'
Invoke-WebRequest $url -OutFile 'C:\Temp\Week-of-Mon-20020408.txt'
Get-Content -Path 'C:\Temp\Week-of-Mon-20020408.txt'

或者这个样本...

$url = 'https://filesamples.com/samples/document/txt/sample1.txt'
Invoke-WebRequest $url -OutFile 'C:\Temp\sample1.txt'
Get-Content -Path 'C:\Temp\sample1.txt'

相关内容