我正在尝试使用PowerShell下载PuTTY可执行文件,但无法在临时路径上获取文件。
我的脚本:
$Url = "https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe"
$Path = "C:%homepath%AppDataLocalTempputty.exe"
$Wc = New-Object System.Net.WebClient
$Wc.DownloadFileAsync($Url,$Path)
我正在通过CMD执行以下命令:
powershell.exe "-ExecutionPolicy" "RemoteSigned" "-file" "test.ps1"
您有两个问题,这两个问题都需要更正才能使脚本有机会工作。
-
从 CMD.EXE 中执行 Powershell 脚本的命令不应引用参数:
powershell.exe -ExecutionPolicy RemoteSigned -file test.ps1
-
要从 powershell 中扩展系统环境变量,请不要像在 CMD 中那样用
%
包围它。有关更多信息,请参阅 http://ss64.com/ps/syntax-env.html;假设环境变量 HOMEPATH 存在,您将在 Powershell 中将其引用为$env:homepath
,而不是%homepath%
。
%VAR%
形式不用于powershell,这仅在CMD中使用。在PowerShell中,你需要改用$env:VAR
。
您可以运行Get-ChildItem Env:
以获取可以使用的所有环境变量的列表。
对于您的脚本,请尝试以下操作:
$Path = "$env:USERPROFILEAppDataLocalTempputty.exe"
我使用了 USERPROFILE 而不是 HOMEPATH,因为它包含驱动器号,因此如果使用不同的字母,您的脚本仍然可以工作。