您的位置:首页 > 运维架构 > Shell

powershell 中的变量和特殊字符

2010-08-26 00:31 246 查看
$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 非 十进制数

(在数组的运算中字符模式显得额外重要)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息