2014-09-16 4 views
-1

이 사용자 스크립트를 개발 중이며 도움을 드리고 싶습니다. 난 그냥 필수 매개 변수 또는 무언가를 변수에 null 값을 갖는 대신 사용자가 일부 정보를 입력 할 수 있도록 아래와 비슷한 변수를 설정하는 방법을 알고 싶습니다. 어떤 도움이나 조언도 감사 할 것입니다. 미리 감사드립니다. 당신은 매개 변수를 사용할 수 있습니다필수 매개 변수 사용

$username = Read-host "Enter username" 
$fname = Read-Host "ENTER First Name" 
$lname = Read-Host "ENTER Last Name" 
$Des = Read-Host "ENTER Description (Work Area)" 
$Title = Read-Host "ENTER Job Title"`enter code here` 
+0

를 이제, 당신은 그들이 스크립트를 실행할 때 사용자가 인수로 매개 변수를 입력해야하거나 메시지를 표시하고자하는 것을 의미합니까 이 사용자는 null 응답을 허용하지 않습니까? – TheMadTechnician

+0

예, 사용자에게 정보를 요청하고 null 응답을 허용하지 않으려합니다. 감사합니다 – riftha

+0

가능한 중복 http://stackoverflow.com/questions/5237723/how-do-i-get-help-messages-to-appear-for-my-powershell-script-parameters –

답변

0

속성 : 콘솔이 필수 매개 변수 만 ISE는 않습니다에 대한 프롬프트로 (기본적으로)을 HelpMessage를 사용하지 않는

param(
    [Parameter(Mandatory=$true, HelpMessage="Enter username")] 
    [ValidateNotNull()] 
    $username, 

    ... 
) 

참고. 빈 문자열을 허용하지 않는 [ValidateNotNullOrEmpty()] 속성도 있습니다.

매개 변수 속성을 사용하는 이점은 함수/스크립트가 인수와 함께 호출되면 프롬프트가 표시되지 않는다는 것입니다. 매개 변수를 지정하지 않으면 PowerShell에서 인수를 묻는 메시지를 표시합니다. 일반적으로 PowerShell은 내가 얻을 수있는만큼 많은 작업을 수행하는 것을 좋아합니다. :-)

+0

@ keith-hill의 http://stackoverflow.com/questions/5237723/how-do-i-ko-help-messages-to-appear-for-my-powershell-script-parameters에 대한 의견을 확인하십시오. 매개 변수의 HelpMessage 특성은 무시되지 않으며, 필수 매개 변수를 지정하지 않고 명령을 호출 할 때 사용됩니다.이 시점에서 해당 매개 변수의 값을 입력하라는 메시지가 나타납니다. HelpMessage 그 텍스트는 해당 프롬프트의 일부로 표시됩니다. " –

+0

'!?'검색 기능이 너무 낮아서 HelpMessage가 콘솔에서'효과적으로'사용되지 않는다고 생각합니다. ISE와 콘솔이이 점을 벗어나는 것은 이상한 것처럼 보입니다. –

0

$ null 또는 공백 만 문자열을 검사하고 사용자에게 정보를 다시 묻는 함수를 만드는 것입니다. 뭔가 같이 : 당신이 그것을 부를 것이다 다음

function get-NonNullString{ 
Param([string]$Prompt=(throw "You must provide text as a prompt")) 
    $Output = Read-Host $prompt 
    While([string]::IsNullOrWhiteSpace($Output)){ 
     write-host "`nYou must enter a response!`n" -ForegroundColor Red 
     $Output = Read-Host $prompt 
    } 
} 

좋아 :

$username = Get-NonNullString "Enter username" 
$fname = Get-NonNullString "ENTER First Name" 
$lname = Get-NonNullString "ENTER Last Name" 
$Des = Get-NonNullString "ENTER Description (Work Area)" 
$Title = Get-NonNullString "ENTER Job Title"