zoukankan      html  css  js  c++  java
  • Powershell 定义文本

    使用引号可以定义字符串,如果想让自己定义的字符串原样输出,可以使用单引号。

    1
    2
    $text='$fei $(tai) $env:windir 飞苔博客 (20+2012)'
    $text

    输出:
    $fei $(tai) $env:windir 飞苔博客 (20+2012)

    如果想让自己的定义的字符中的变量被内容替换,表达式被执行可以使用双引号.

    1
    2
    3
    $site="飞苔博客 Powershell博客"
    $text="$site $(get-date) $env:windir"
    $text

    输出:
    飞苔博客 Powershell博客 08/25/2012 18:49:41 C:windows

    文本中的特殊字符

    如果文本放置在一个闭合的双引号中,Powershell解释器回去寻找特殊字符.在这方便主要有两种特殊字符,一个是变量的前缀“$”,一个是反引号“·”位于数字键1左边。

    处理变量

    将变量放在字符串中,输出时变量会被替换成变量本身的值或者内容。如果将表达式放置在字符串中,并且使用的格式如“$(expression)”,表达式也会被执行,并被替换成表达式执行的输出。

    1
    2
    3
    4
    5
    6
    "系统目录位于:$env:windir"
    "默认安装程序目录位于:$env:ProgramFiles"
    "机器名为:$env:computername"
     
    "当前日期:$(get-date)"
    "1GB=$(1gb/1kb)KB"

    输出:

    “系统目录位于:$env:windir”
    “默认安装程序目录位于:$env:ProgramFiles”
    “机器名为:$env:computername”

    “当前日期:$(get-date)”
    “1GB=$(1gb/1kb)KB”

    Powershell转义字符

    在其它编程语言中喜欢将反斜杠作为转义字符,但是在Powershell中扮演转义字符角色的不是反斜杠,而是反引号“`”字符串中的反引号,会对紧跟随其后的字符进行特殊处理。例如下面的,在一个字符串中输出双引号,和换行符。

    1
    2
    3
    4
    5
    6
    #使用单引号闭合字符串输出双引号
    'The site of my blog is"www.mossfly.com"'
    #使用转义字符输出双引号
    “My blog site is`"www.mossfly.com`""
    #在字符串中输出换行符
    “The site of my blog is `"www.mossfly.com`",`n飞苔博客"

    输出:

    The site of my blog is”www.mossfly.com”
    My blog site is”www.mossfly.com”
    The site of my blog is “www.mossfly.com”,
    飞苔博客

    其它的转义字符如下表

    Powershell转义字符表
    转义字符 描述
    `n 换行符
    `r 回车符
    `t 制表符
    `a 响铃符
    `b 退格符
    `’ 单引号
    `” 双引号
    `0 Null
    反引号本身

    Here strings 定义多行文本

    @“字符串”@格式定义多行文本,尤其是较长的文本,再好不过了

    1
    2
    3
    4
    5
    6
    @"
    这首诗用来评价陶渊明的诗歌再好不过了
     
    一语天然万古新,豪华落尽见真淳。
    南窗白日羲皇上,未害渊明是晋人。
    "@

    这里要注意开始和结束的标记必须另起一行。

    用户交互

    如果要提示用户输入可以使用read-host

    PS E:> $name=Read-Host "请输入您的用户名"
    请输入您的用户名: Mosser Lee
    PS E:> "您输入的用户名为:$name"
    您输入的用户名为:Mosser Lee

    只是有一点Read-Host存储的字符串使用的单引号闭合,也就是说不会自动解析变量,不过可以通过ExpandString方法解析,例如:

    PS E:> $inputPath=Read-Host "请输入文件路径"
    请输入文件路径: $env:windir
    PS E:> $inputPath
    $env:windir
    PS E:> $ExecutionContext.InvokeCommand.ExpandString($inputPath)
    C:windows

    但是如果想通过Read-Host接受敏感数据,比如密码,可以使用-asSecureString选项,不过这样读取到的数据为SecureString,及为加过密后的数据,当然你可以将密码转换成普通文本.

    PS E:> $pwd=Read-Host -AsSecureString "请输入密码"
    请输入密码: ******
    PS E:> $pwd
    System.Security.SecureString
    PS E:> [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwd))
    abc123
    询问用户名和密码

    如果你想授权一个用户需要提供用户凭据,可以使用Get-Credential命令,该命令会弹出一个安全对话框,一旦用户输入完毕,就会返回一个Credential对象包含用户名和密码

    PS E:> $cre=Get-Credential MossserLee
    PS E:> $cre
    UserName                        Password
    --------                        --------
    MossserLee System.Security.SecureString
  • 相关阅读:
    在.net中过滤敏感字符
    const和readonly的联系和区别
    新闻内容页分页的简单做法
    jmail邮件发送问题
    nvarchar与varchar的区别
    C#中"is" vs "as"
    在C#中,string 类型可与SQL SERVER中的int 类型作比较
    做网站常用代码集锦 (转)
    做网站常用代码集锦 (转)
    ADO 数据类型转换表 oledbtype sqldbtype (二)
  • 原文地址:https://www.cnblogs.com/micro-chen/p/5807618.html
Copyright © 2011-2022 走看看