首页 > 其他分享 >Powersehll交互式输入定义方法-03

Powersehll交互式输入定义方法-03

时间:2024-01-11 22:34:31浏览次数:33  
标签:03 Powersehll name age 用户 参数 定义方法 默认值 输入

定义和使用交互式输入时,有一些注意事项需要考虑。以下是一些常见的注意事项:

  1. 提示信息清晰:在提示用户输入时,确保提示信息清晰、明确,并提供必要的上下文说明,使用户知道预期的输入内容。
  2. 输入验证和错误处理:对于用户输入的值,进行必要的验证和错误处理。确保输入符合预期的格式、类型或范围,并提供有意义的错误消息,以引导用户进行正确的输入。
  3. 默认值设置:对于可能需要用户输入的参数,可以使用默认值来提供一个合理的选择。如果用户未提供输入,则可以使用默认值作为替代。
  4. 参数选项:如果有多个选项供用户选择,可以使用参数来指定选项,并根据用户的选择执行相应的逻辑。
  5. 输入确认:某些情况下,可能需要用户确认他们的输入是否正确。在这种情况下,提供一个确认的步骤,以便用户可以检查并确认他们的输入。
  6. 键盘输入处理:在某些情况下,用户可能会尝试使用键盘快捷键或特殊字符。请确保您的输入处理逻辑不会与这些键盘操作发生冲突,并正常处理用户的输入。
  7. 错误处理和异常捕获:当用户输入不符合预期时,及时捕获并处理输入错误或异常情况,以避免脚本或程序的崩溃。
  8. 用户友好性:考虑用户体验,尽量使交互式输入的过程简单、友好和易于理解。提供必要的帮助信息,例如示例、语法说明或指令,以帮助用户正确使用交互式功能。
  9. 测试和验证:在定义和使用交互式输入之前,进行充分的测试和验证,确保输入的正确性、可靠性和稳定性。

PowerShell 中的 Read-Host 命令时,您可以提示用户输入信息并将结果存储到一个变量中。以下是 Read-Host 命令的使用方法和一些常用参数的说明:

基本语法:
Read-Host [-Prompt <String>]   #-Prompt <String>:指定要显示给用户的提示信息

#基本用法示例。
$name = Read-Host "请输入您的姓名"   #运行该脚本后,它会显示一个提示信息,等待用户输入姓名。用户键入姓名后,脚本将该值存储在 $name 变量中,并输出该变量的值。
Write-Output "您的姓名是:$name"

#实现检查到输入是控制,也就是直接回车后,可以输出一个默认值方法
$age = Read-Host "请输入您的年龄"
if ($age -eq "") {
    $age = 30  # 默认值为 30
}
Write-Output "您的年龄是:$age"




#通过脚本定义多个参数交互式输入参数,如下包括必须参数,默认参数,及帮助功能,假设脚本名称保存为ExampleScript.ps1

[CmdletBinding()]
param (
    [Parameter(Mandatory=$true, Position=0, HelpMessage="请输入您的姓名")]    #在脚本运行后,输入!?查看此参数提示的帮助信息,如果不设置此参数,就没有帮助说明。
    [string]$name,

    [Parameter(Mandatory=$false, HelpMessage="请输入您的年龄")]    #默认参数主要在Powersehll管理员执行此脚本内容的,如果不指定参数就默认30
    [int]$age = 30,

    [switch]$Help
)

#
$helpMessage = @"
这是一个示例脚本。

参数:
    -name <string> : 必须参数,表示姓名。
    -age <int> : 可选参数,默认值为 30,表示年龄。
    -Help : 可选开关参数,用于打印帮助信息。

用法示例:
    .\ExampleScript.ps1 -name "John" -age 25
"@

#判断是否输入的-Help参数,如果输入,则显示脚本使用语法
if ($Help) {
    Write-Output $helpMessage
}
#打印出来信息
Write-Output "您的姓名是:$name"
Write-Output "您的年龄是:$age"

#执行过去,如果加-help显示帮助参数,-name 是必须参数,如果外部没有指定,将会提示你输入name的值,-age 如果开始没有指定,后续就采用默认值。
PS C:\Users\dengpeng\Desktop> .\ExampleScript.ps1.ps1 -Help -name "dengpeng" -age 50
这是一个示例脚本。

参数:
    -name <string> : 必须参数,表示姓名。
    -age <int> : 可选参数,默认值为 30,表示年龄。
    -Help : 可选开关参数,用于打印帮助信息。

用法示例:
    .\ExampleScript.ps1 -name "John" -age 25
您的姓名是:dengpeng
您的年龄是:50


#位置参数说明
PowerShell 脚本中,参数的 Position 属性用于指定参数的位置。默认情况下,参数的位置是按照定义的顺序从左到右依次递增的,第一个参数的位置为 0,第二个参数的位置为 1,依此类推。

通过设置 Position 属性,您可以显式地指定参数的位置,以覆盖默认的位置分配。这对于提供更大的灵活性和可读性非常有用。

例如,如果您将参数的 Position 属性设置为 2 或 3,那么在运行脚本时,可以根据所提供的参数值的位置而不是参数名来解析参数。这样的好处是可以简化命令的使用方式,特别是当某些参数具有相同类型或默认值时。
param (
    [Parameter(Mandatory=$true, Position=0, HelpMessage="请输入您的姓名")]
    [string]$name,

    [Parameter(Mandatory=$false, Position=2, HelpMessage="请输入您的年龄")]
    [int]$age = 30
)

#运行时,如下都行
#在这个示例中,$name 参数的位置被显式设置为 0,$age 参数的位置被显式设置为 2。这意味着在运行脚本时,可以按照位置顺序提供参数值,而不需要使用参数名称。

例如,以下两种方式都是有效的:
.\ExampleScript.ps1 "John" 25
.\ExampleScript.ps1 -name "John" -age 25

 #如果没有设置 Position 属性,参数将按照默认的位置逐个解析,需要严格填写参数名称才行。

标签:03,Powersehll,name,age,用户,参数,定义方法,默认值,输入
From: https://blog.51cto.com/dengpeng2025/9204498

相关文章

  • Virtualbox - VM can't start after OS update
      Executing'modprobevboxdrv'didn'twork:zzh@ZZHPC:~$sudomodprobevboxdrvmodprobe:FATAL:Modulevboxdrvnotfoundindirectory/lib/modules/6.5.0-14-generic HadtoremoveVirtualbox6.1andinstallVirtualbox7.0:zzh@ZZHPC:~......
  • UM2003A 一款200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片
    UM2003A是一款工作于200~960MHz频段的单片集成、高性能、可独立运行的OOK发射器。内部集成的OTP方便用户对各种射频参数以及特色功能进行编程。该芯片以其高集成度和低功耗的设计,特别适用于低成本,低功耗,电池驱动的无线发射应用。UM2003A的工作载波频率是由一个低噪声小......
  • [ 20230308 CQYC省选模拟赛 T2 ] 塑料内存条
    题意给定\(n\)个不可重集,初始每个集合\(i\)有元素\(c_i\)。请你以下\(3\)种操作:1xy在集合\(x\)插入\(y\)。2xy将\(y\)集合所有数插入\(x\),并删除\(y\)集合(不影响别的集合的下标)3xy求\(x\)集合与\(y\)集合的交之和。Sol可塑性记忆。注意到前......
  • 'gbk' codec can't decode byte 0xff in position 0
    使用open()报错File"E:\python3\di1gexiangmu20231219\ex20.py",line10,inprint_allprint(f.read())^^^^^^^^UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xffinposition0:illegalmultibytesequence默认情况......
  • 03-集群搭建:手把手教你玩转 Kubernete 集群搭建
    通过上一节课的学习,我们已经对Kubernetes的架构有了清楚的认识。但是到现在还没有和Kubernetes集群真正打过交道,所以你可能有一种“不识庐山真面目”的云里雾里的感觉。那么本节课,我们就来学习如何搭建Kubernetes集群,开启探索Kubernetes的第一站。在线Kubernetes集群......
  • P4103 [HEOI2014] 大工程 题解
    题目链接:大工程先考虑只有一次查询,很显然我们可以暴力树上dp处理出答案。对于每个节点而言,有:容易看出类似点分治逐个遍历子树计算前面一堆子树对后面子树的贡献思想,我们可以很容易的知道:对于路径总和,显然多了一段新的贡献,这段贡献为当前关键点和前面点多的一段\(2\)号路......
  • No 'Access-Control-Allow-Origin' header is present on the requested resource', 跨
    https://blog.csdn.net/dear_little_bear/article/details/839993911.当请求不在同一域名下的资源文件(ip地址+端口号)时,会报如下错误:“No‘Access-Control-Allow-Origin’headerispresentontherequestedresource.Origin‘http://localhost:8080’isthereforenotall......
  • 寒假生活指导03
    今天继续rddd练习:frompysparkimportSparkConf,SparkContext#创建sparkconf对象conf=SparkConf().setMaster("local[*]").setAppName("test_app")#基于sparkconf对象创建sparkContext对象sc=SparkContext(conf=conf)##########基本结构#map计算#rdd=sc.parall......
  • 【APP逆向03】反编译后代码定位
    需求:抓包某款APP的登录请求,定位到密码加密的逻辑1.通过抓包分析,password被加密了2.反编译定位位置URL网址或参数关键字pwd"pwd"put("pwd等关键字搜索3.双击,跳转4.右击,查找用例5.右击--查找声明6.此处就是密码的加密逻辑,简单的md5,使用python复现imp......
  • RLAIF方法与传说中的函数'Q',揭露OpenAI那不为人知的Qstar计划
    早晨刚起来,看群里新哥转了这个帖子:   帖子不长,但是基本是爆炸类的新闻了!这个应该也就是Sam之前被董事会诟病的所谓隐瞒了的真相!   在讲解这个帖子之前,先要普及2个概念:1-RLAIF:   不是TGIF,虽然今天确实是周五   RLAIF是Google今年9月新出来的论文,论文地址:23......