Я пытаюсь создать однострочный скрипт powershell, который просто запрашивает URL-адрес. Скрипт работает нормально, когда я запускаю его как ps1 файл:ошибка синтаксического анализа в однострочном скрипте powershell
Файл "Test.ps1":
$webclient=New-Object "System.Net.WebClient"
$data=$webclient.DownloadString("https://google.com")
я запускаю этот скрипт в PS консоли, как это:
PS C:\test.ps1 -ExecutionPolicy unrestricted
Это работает без проблем, но когда я пытаюсь запланировать этот скрипт и сделать его однострочным в соответствии с these recommendations, т.е. заменить ""
на ''
и отдельные команды с ;
так что результат будет:
одна линия:
powershell -ExecutionPolicy unrestricted -Command "$webclient=New-Object 'System.Net.WebClient'; $data=$webclient.DownloadString('https://google.com');"
Тогда я получил следующую задачу:
Ошибка:
The term '=New-Object' is not recognized as the name of a cmdlet, function, script file, or operable program
Я попробовал другой сценарий, который также отлично работает как файл ps1, но не работает как однострочный:
$request = [System.Net.WebRequest]::Create("https://google.com")
$request.Method = "GET"
[System.Net.WebResponse]$response = $request.GetResponse()
echo $response
одна линия:
powershell -ExecutionPolicy unrestricted -Command "$request = [System.Net.WebRequest]::Create('https://google.com'); $request.Method = 'GET'; [System.Net.WebResponse]$response = $request.GetResponse(); echo $response"
Ошибка:
Invalid assignment expression. The left hand side of an assignment operator needs to be something that can be assigned to like a variable or a property. At line:1 char:102
get-host
По команде у меня есть Powershell v 2.0. В чем проблема с однострочными скриптами выше?
'... -command PowerShell "& {$ WebClient = ...}"' –
@AnsgarWiechers Спасибо, но, к сожалению, назвать оператор (&) не помогло мне в В этом случае я получаю те же ошибки:/ –
Это потому, что вы используете командную строку из PowerShell вместо того, чтобы запускать ее как запланированную задачу, как вы сказали. Если вам нужно запустить его из интерактивной консоли, используйте CMD для эмуляции среды, которая больше похожа на то, что у вас есть с запланированной задачей. –