скрипт не запрашивает пользовательский ввод

#powershell

#powershell

Вопрос:

мой скрипт не запрашивает пользовательский ввод, когда он выполняется с использованием опции ‘run with powershell’. Однако он запрашивает ввод данных пользователем, когда я редактирую скрипт и запускаю его с помощью инструмента PowerShell ISE.

 $MGWServer = Read-Host 'Enter the name of the server where you want to copy the siteKey file from'

# variable to hold the objects of the list file for copying
$hostNameList = Get-Content D:Temphostlist.txt

# copy file from source to destination
foreach ($hostName in $hostNameList)
{
    $TARGETDIR = "\$hostNameD$Temp"

    Copy-Item -Path "\$MGWServerD$InformaticaPowerCenterispconfigkeyssiteKey" -Destination "$TARGETDIRsiteKey"
}
  

Комментарии:

1. В чем здесь ваш вопрос? Вы имеете в виду, когда вы щелкаете правой кнопкой мыши на скрипте и выбираете «Запустить с помощью PowerShell» из контекстного меню? Он должен запрашивать пользовательский ввод из-за вашей команды read-host, независимо от того, выполняется ли она из PowerShell ISE или щелчком правой кнопки мыши по вашему сценарию для выполнения…

2. что такое «запуск с помощью powershell»? не могли бы вы, пожалуйста, привести нам полный пример того, как вы запускаете скрипт?

3. Я пытаюсь запустить скрипт для копирования файла из одного места в другое. Скрипт предлагает пользователю ввести имя исходного сервера, с которого необходимо скопировать файл, а затем он берет список hosts из hostlist.txt и копирует файл на эти серверы. Щелкните правой кнопкой мыши сценарий powershell, и вы сможете выбрать один из двух вариантов. 1) Запуск с помощью PowerShell 2) Редактирование. Когда я запускаю с параметром powershell, он просто завершает выполнение скрипта, не позволяя мне перейти на исходный сервер. Однако он запрашивает ввести значение, когда я выбираю опцию редактирования, которая открывается в редакторе ISE.

4. что вы получаете в вашей консоли powershell (не ise) при запуске get-executionpolicy

Ответ №1:

Я не могу воспроизвести вашу проблему с помощью минимального скрипта:

 $X = Read-Host 'Enter your text'
Write-Host $x 
Pause
  

При выполнении из контекстного меню «Выполнить с помощью Powershell» скрипт считывает данные с хоста и записывает их без проблем. В пути к вашему скрипту может быть недопустимый символ. Попробуйте добавить паузу в начале и внутри цикла, чтобы просмотреть любые ошибки. Также попробуйте запустить его из командной строки Powershell, а не из ISE.

Комментарии:

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