Prompt for user input in PowerShell

前端 未结 4 807
鱼传尺愫
鱼传尺愫 2020-11-29 15:51

I want to prompt the user for a series of inputs, including a password and a filename.

I have an example of using host.ui.prompt, which seems sensible,

4条回答
  •  一整个雨季
    2020-11-29 16:05

    Read-Host is a simple option for getting string input from a user.

    $name = Read-Host 'What is your username?'
    

    To hide passwords you can use:

    $pass = Read-Host 'What is your password?' -AsSecureString
    

    To convert the password to plain text:

    [Runtime.InteropServices.Marshal]::PtrToStringAuto(
        [Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass))
    

    As for the type returned by $host.UI.Prompt(), if you run the code at the link posted in @Christian's comment, you can find out the return type by piping it to Get-Member (for example, $results | gm). The result is a Dictionary where the key is the name of a FieldDescription object used in the prompt. To access the result for the first prompt in the linked example you would type: $results['String Field'].

    To access information without invoking a method, leave the parentheses off:

    PS> $Host.UI.Prompt
    
    MemberType          : Method
    OverloadDefinitions : {System.Collections.Generic.Dictionary[string,psobject] Pr
                        ompt(string caption, string message, System.Collections.Ob
                        jectModel.Collection[System.Management.Automation.Host.Fie
                        ldDescription] descriptions)}
    TypeNameOfValue     : System.Management.Automation.PSMethod
    Value               : System.Collections.Generic.Dictionary[string,psobject] Pro
                        mpt(string caption, string message, System.Collections.Obj
                        ectModel.Collection[System.Management.Automation.Host.Fiel
                        dDescription] descriptions)
    Name                : Prompt
    IsInstance          : True
    

    $Host.UI.Prompt.OverloadDefinitions will give you the definition(s) of the method. Each definition displays as ().

提交回复
热议问题