Проблема с загрузкой файла Powershell

Я пытаюсь загрузить исполняемый файл PuTTY с помощью PowerShell, но не могу получить файл по временному пути.

Мой сценарий:

$Url = "https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe"
$Path = "C:%homepath%\AppData\Local\Temp\putty.exe"
$Wc = New-Object System.Net.WebClient
$Wc.DownloadFileAsync($Url,$Path)

Я выполняю следующую команду через CMD:

powershell.exe "-ExecutionPolicy" "RemoteSigned" "-file" "test.ps1"

person tehseen sagar    schedule 27.01.2017    source источник
comment
Пожалуйста, включите все сообщения об ошибках, которые вы получаете, и любую другую информацию о том, что вы пытались сделать, чтобы заставить его работать.   -  person Jeff Zeitlin    schedule 27.01.2017


Ответы (2)


У вас есть две проблемы, обе из которых должны быть исправлены, чтобы ваш скрипт мог работать.

  1. Команда для выполнения сценария Powershell из CMD.EXE не должна иметь аргументы в кавычках:

    powershell.exe -ExecutionPolicy RemoteSigned -file test.ps1

  2. Чтобы расширить переменную системной среды из PowerShell, вы не окружаете ее %, как в CMD. Подробнее см. http://ss64.com/ps/syntax-env.html. Информация; предполагая, что переменная среды HOMEPATH существует, вы должны ссылаться на нее в Powershell как $env:homepath, а не %homepath%.

person Jeff Zeitlin    schedule 27.01.2017

Форма %VAR% не используется в powershell, она используется только в CMD. В PowerShell вместо этого нужно использовать $env:VAR.

Вы можете запустить Get-ChildItem Env:, чтобы получить список всех переменных среды, которые вы можете использовать.

Для вашего сценария попробуйте следующее:

$Path = "$env:USERPROFILE\AppData\Local\Temp\putty.exe"

Я использовал USERPROFILE вместо HOMEPATH, так как он включает букву диска, поэтому ваш скрипт все равно будет работать, если используется другая буква.

person James C.    schedule 27.01.2017