Предлагать пользовательский ввод для использования в команде Powershell?

791
Ruther Melchor

Я пытаюсь выполнить код ниже, и он работает:

PS C:\> Rename-Computer -NewName TEST -DomainCredential okadamanila\itservices 

Учитывая, что имя хоста указано в файле PS1, я хотел бы попросить или предложить пользователю ввести данные для замены имени хоста; Я попытался с помощью блока кода ниже:

$hostname = read-host "Please enter your name" Write-Host "YOUR PREFERRED HOSTNAME IS $hostname - INITIALIZING HOSTNAME CHANGE" $credential = Get-Credential PS C:\> Rename-Computer -NewName $name -DomainCredential $credential Read-Host -Prompt "Press Enter to exit" 

Где ввод от пользователя будет именем хоста, которое будет использоваться в функции Rename-Computer, это возможно?

РЕДАКТИРОВАТЬ:

Блок кода выше, кажется, работает, но я столкнулся с проблемой ниже:

Обнаружена ошибка

0
Что именно идет не так? Если я это сделаю: `$ var = read-host" Question: "` с последующим `$ var`, я получу внутри $ var то, что я ввел в вопросе. LPChip 6 лет назад 1
Если у вас есть специальная функция для получения имени пользователя (кстати, [`Get-UserName` будет правильной номенклатурой] (https://msdn.microsoft.com/en-us/library/ms714428 (v = vs. 85) .aspx)), зачем помещать `Read-Host` в` param () `-блок? Я просто сделал бы `while ($ true) {[string] $ name = Read-Host" Введите имя пользователя "; if ($ name.Length -gt 0) else } ` flolilolilo 6 лет назад 0
Если вы хотите использовать `param ()` -блок, чтобы вы могли вызывать функцию и параметр name, чтобы он не запрашивал, то я бы посоветовал вам протестировать `.Length`` $ name`, как ` -name "" `является допустимой строкой, которая не содержит никакого имени. Так `function Get-UserName () else } `_ Или есть очевидный момент, которого я не вижу? _ flolilolilo 6 лет назад 0

1 ответ на вопрос

0
stevlars

Избавьтесь от подсказки ( PS C:>) раньше Rename-Computer. Вам все еще нужно изменить имя переменной (с myname на name ), в котором вы находитесь, $myname = read-host "Please enter your name:"чтобы оно считывало $name = read-host "Please enter your name:"и совпадало с тем, что вы имеете в качестве имени переменной при вызове функции Rename-Computer -NewName $name -DomainCredential $credential).