$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