powershell 中的变量和特殊字符

时间:2022-11-07 06:35:32

$yu="zhihao"

1  write-host $yu      输出  zhihao  (变量值) 2  write-host $$yu    输出  yuyu   ($$追加最后一次令牌,如上一次dir 则输出 diryu) 3  write-host $$$yu   输出  dirzhihao   ($$追加最后一次令牌,$yu为变量值.)
4  $yu | get-member -membertype -propertype    对象属性值
5  ($yu).member   (member 为 $yu | get-member 获得的值)
6  $yu = ${d:\1.txt}  保存d:\1.txt 内容到$yu
7  $zhi = [zhi]$yu    $yu 将值传递给 $zhi
8  + - * / 可以直接在 $yu 的前后 如
   $yu = 2
   write-host 1+$yu  输出 3
   write-host 1+$yu equ $(1+$yu)  输出  1+2 equ 3
9  $yu = get-wmiobject -class "win32_wmisetting" -namespace "root\cimv2"
   foreach ( $env in $yu ) {
       if ($env.logginglevel | select-string "1") {
            $env.logginglevel = 2
                 $env.put()
       }
       if (...)                                   {...
       }
}                   ($yu指定命令,被foreach 中的 $env 替换,查询并设定日志级别
       再次命令中-namespace 和 -class 可以不指定 ,涉及AD,GPO,APP的查询和设置
       请查询WMI类别后指定. $ 非常灵活。)
10  ~!:%^*.[{+-*/?\ 可以直接加在$前后
    $yu = "fa"
    write-host %~$yu   输出   %~fa    (可扩展到批处理的for增强)
    write-host :$yu   输出   :zhihao  (可扩展到批处理的: goto)
    ......
11  $yu = dir /s /b d:\*.exe
    switch -wildcard ($yu)  {
        "*net*" { $yu.delete }
    (-wildcard将$yu 保存在() 并实现 {} 中的内容,科技简化枚举的过程并灵活操作$yu )
12  命令中已定义的特殊符号要用转义符`区别 或用双引号
    write-host `@$yu  or "@$yu"   输出  @zhihao  (@" "@为文本结构,变量不可直接追加 )
    write-host `#$yu  or "#$yu"   输出  #zhihao  (直接#把$yu当做注释,输出空)
    write-host `$($yu)            输出  zhihao   (请看1,2,3,不可用""和'')
    write-host `($yu  or "($yu"   输出  (zhihao  (只在前面加(语法不完整,需要在后加))
    write-host `)$yu  or ")$yu"   输出  )zhihao  (同上)
    write-host `>$yu  or ">$yu"   输出  >zhihao  (输出到,直接输入变量$yu为空值)
    write-host `<$yu  or "<$yu"   输出  <zhihao  (没有可接受的信息,)
    write-host `&$yu  or "&$yu"   输出  &zhihao  (之前没有条件)
    以上情况用单引号 只输出 $yu
13  在多次需要的时候,将命令保存为变量时重要的.
    $yu = $_.status
    get-wmiobject win32_service | sort-object status -desending | 
    for  {
          if      ("$yu" -eq "running")     { ..
             ..   }
          elseif  ("$yu" -eq "stopped")     { ..
             ..   }
          else    ( ..              ..)     { ..
             ..   } 
 
14  for 中
    for ($yu=1;$yu -le 3; $yu++) { ..
           ..  }
    (gr eq le 在 for 中变量真正得到了体现 )  
15  特殊变量
    (1)  $^  外壳上一行输入的第一个令牌
    (2)  $$  外壳上一行输入的最后一个令牌
    $yu = "1" $zhi = "2" $hao = "3"
    write-host $^$yu  输出 31
    write-host $$$yu  输出 11
    (3)  $_  管道对象 用于 where-object, foreach-object,switch
    get-service | where-object {$_.status -eq "running"}
    (4)  $? 类似于批处理中的%errorlevel%  判断运行结果
    在 | 后面加上它看 true 和 false
    (5)  $args  创建需要的函数的参数
    switch ($args) {
    one
    two
    three
    }    (可以用$args判断是哪一个值或变量。还有寄存功能 $args[0] $args[1])
    (6)  $error 保存可能发生的错误值,(直接执行)
    (7)  $executioncontext ($executioncontext | get-member | format-list *)
    (8)  $foreach  (枚举器适合大量的判断和输出)
    (9)  $home  (当前用户主目录)
    (10) $input (接受和传递函数和代码块)
         foreach ($yu in $input) {...}
         $s = "yu zhi hao"
         $s = Add-Member -InputObject $s
    (11) $match (查找内容和哈希表的筛选器)
         "yuzhihao" -match "yu" (true)
         "yuzhihao" -match "yz" (false)
    (12) $myinvocation (当前脚本或命令的信息)
    (13) $pshome (powershell 安装目录)
    (14) $host  (当前宿主的信息)
    (15) $lastexitcode (上一个要运行的原声程序的退出代码)
    (16) $true
    (17) $false
    (18) $null
    (19) $this 代表某下代码块的当前对象
    powershell /noexit /command d:\1.ps1 "d:\1.xml" $this 为 d:\1.xml
    (20) $ofs (转换数组为字符串是的输出字段分隔符)
    (21) $shellid (外壳标示符,标示c:\windows\system32\windows powershell\ 文件 及 executionpoliy)
    (22) $stacktrace (上一个错误的详细堆栈追踪信息)
    (简化代码及代码过程的必须)
   
            
13  正则表达式 (改变输出方式,ps1中很有用)
   \a 警报 ;  \b  []中,退格\u0008,正则表达式中,代表文字边界.
   \t 缩进 \u0009    \r 回车 \u000d     /v 垂直缩进 \u000b
   \f 换页 \u000c    \n 换行 \u000a     /e 退出 \u001b
   \040 可捕获数组,代表八进制数,不可捕获,代表空格 \040
   \x20 十六进制
   \cC ASCII 控制符 "control-C"
   \u0020 十六进制的unicode(仅限4位)
   (熟悉它强大的扩展,完成高效甚至是不能达到的代码)
   字符   [char] 匹配   [^char] 不匹配   [firstchar-lastchar] 字符范围
   \p unicode 类的特定名称块   /P  非 unicode 类的特定名称块
   \w 单词字符   \W  非 单词字符
   \s 空白属性字符    \S  非  空白属性字符
   \d 十进制数        \D  非  十进制数
   (在数组的运算中字符模式显得额外重要)

本文出自 “suihanlaile” 博客,请务必保留此出处http://498000.blog.51cto.com/488000/383136