powershell完全学习手册簿.docx
- 文档编号:27685002
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:77
- 大小:127.77KB
powershell完全学习手册簿.docx
《powershell完全学习手册簿.docx》由会员分享,可在线阅读,更多相关《powershell完全学习手册簿.docx(77页珍藏版)》请在冰豆网上搜索。
powershell完全学习手册簿
Powershell定义变量
Powershell,程序设计 添加评论
十二052011
变量可以临时保存数据,因此可以把数据保存在变量中,以便进一步操作。
帮助
01
02
03
04
05
06
07
08
09
10
11
#定义变量
$a=10
$b=4
#计算变量
$result=$a*$b
$msg="保存文本"
#输出变量
$result
$msg
40
保存文本
powershell不需要显示地去声明,可以自动创建变量,只须记住变量的前缀为$.
创建好了变量后,可以通过变量名输出变量,也可以把变量名存在字符串中。
但是有个例外单引号中的字符串不会识别和处理变量名。
选择变量名
在powershell中变量名均是以美元符”$”开始,剩余字符可以是数字、字母、下划线的任意字符,并且powershell变量名大小写不敏感($a和$A是同一个变量)。
某些特殊的字符在powershell中有特殊的用途,一般不推荐使用这些字符作为变量名。
当然你硬要使用,请把整个变量名后缀用花括号括起来。
PSC:
\>${"I"like$}="mossfly"
PSC:
\>${"I"like$}
mossfly
赋值和返回值
赋值操作符为“=”,几乎可以把任何数据赋值给一个变量,甚至一条cmdlet命令
,为什么,因为Powershell支持对象,对象可以包罗万象。
PSC:
\>$item=Get-ChildItem.
PSC:
\>$item
Directory:
C:
\
ModeLastWriteTimeLengthName
---------------------------
d----2011/11/2317:
25ABC
-a---2011/11/2418:
3067580a.html
-a---2011/11/2420:
0426384a.txt
-a---2011/11/2420:
2612060alias
-a---2011/11/2420:
2712060alias.ps1
-a---2011/11/2317:
250b.txt
-a---2011/11/2317:
250c.txt
-a---2011/11/2317:
250d.txt
-a---2011/11/2511:
20556employee.xml
-a---2011/11/2417:
377420name.html
-a---2011/11/2815:
3063ping.bat
-a---2011/11/2417:
44735892Powershell_Cmdlets.html
-a---2011/11/2817:
0360test.ps1
-a---2011/11/2317:
37242test.txt
-a---2011/11/2816:
42170test.vbs
PSC:
\>$result=3000*(1/12+0.0075)
PSC:
\>$result
272.5
给多个变量同时赋值
赋值操作符不仅能给一个变量赋值,还可以同时给多个变量赋相同的值。
PSC:
\>$a=$b=$c=123
PSC:
\>$a
123
PSC:
\>$b
123
PSC:
\>$c
123
交换变量的值
要交换两个变量的值,传统的程序语言至少需要三步,并且还需定义一个中间临时变量。
$Value1=10
$Value2=20
$Temp=$Value1
$Value1=$Value2
$Value2=$Temp
在powershell中,交换两个变量的值,这个功能变得非常简单。
PSC:
\>$value1=10
PSC:
\>$value2=20
PSC:
\>$value1,$value2=$value2,$value1
PSC:
\>$value1
20
PSC:
\>$value2
10
查看正在使用的变量
Powershell将变量的相关信息的记录存放在名为variable:
的驱动中。
如果要查看所有定义的变量,可以直接遍历variable:
PSC:
\>lsvariable:
NameValue
---------
"I"like$mossfly
$cls
True
^cls
_
11
a123
args{}
b123
c123
ConfirmPreferenceHigh
ConsoleFileName
DebugPreferenceSilentlyContinue
。
。
。
查找变量
因为有虚拟驱动variable:
的存在,可以象查找文件那样使用通配符查找变量。
例如要查询以value打头的变量名。
PSC:
\>lsvariable:
value*
NameValue
---------
value120
value210
验证变量是否存在
验证一个变量是否存在,仍然可以象验证文件系统那样,使用cmdletTest-Path。
为什么?
因为变量存在变量驱动器中。
PSC:
\>Test-Pathvariable:
value1
True
PSC:
\>Test-Pathvariable:
value2
True
PSC:
\>Test-Pathvariable:
valueUnkonw
False
删除变量
因为变量会在powershell退出或关闭时,自动清除。
一般没必要删除,但是你非得删除,也可以象删除文件那样删除它。
PSC:
\>Test-Pathvariable:
value1
True
PSC:
\>delvariable:
value1
PSC:
\>Test-Pathvariable:
value1
False
使用专用的变量命令
为了管理变量,powershell提供了五个专门管理变量的命令Clear-Variable,Get-Variable,New-Variable,Remove-Variable,Set-Variable。
因为虚拟驱动器variable:
的存在,clear,remove,set打头的命令可以被代替。
但是Get-Variable,New-Variable。
却非常有用new-variable可以在定义变量时,指定变量的一些其它属性,比如访问权限。
同样Get-Variable也可以获取这些附加信息。
变量写保护
可以使用New-Variable的option选项在创建变量时,给变量加上只读属性,这样就不能给变量重新赋值了。
PSC:
\>New-Variablenum-Value100-Force-Optionreadonly
PSC:
\>$num=101
Cannotoverwritevariablenumbecauseitisread-onlyorconstant.
Atline:
1char:
5
+$num<<<<=101+CategoryInfo:
WriteError:
(num:
String)[],SessionStateUnauthorizedAccessException+FullyQualifiedErrorId:
VariableNotWritablePSC:
\>delVariable:
\num
Remove-Item:
Cannotremovevariablenumbecauseitisconstantorread-only.Ifthevariableisread-only,
rationagainspecifyingtheForceoption.
Atline:
1char:
4
+del<<< \num +CategoryInfo: WriteError: (num: String)[Remove-Item],SessionStateUnauthorizedAccessExcepti +FullyQualifiedErrorId: VariableNotRemovable,Microsoft.PowerShell.Commands.RemoveItemCommand 但是可以通过删除变量,再重新创建变量更新变量内容。 PSC: \>delVariable: \num-Force PSC: \>$num=101 PSC: \>$num 101 有没有权限更高的变量,有,那就是: 选项Constant,常量一旦声明,不可修改 PSC: \>new-variablenum-Value"strong"-Optionconstant PSC: \>$num="why? cannotdeleteit." Cannotoverwritevariablenumbecauseitisread-onlyorconstant. Atline: 1char: 5 +$num<<<<="why? cannotdeleteit."+CategoryInfo: WriteError: (num: String)[],SessionStateUnauthorizedAccessException+FullyQualifiedErrorId: VariableNotWritablePSC: \>delVariable: \num-Force Remove-Item: Cannotremovevariablenumbecauseitisconstantorread-only.Ifthevariableisread-only, rationagainspecifyingtheForceoption. Atline: 1char: 4 +del<<< \num-Force +CategoryInfo: WriteError: (num: String)[Remove-Item],SessionStateUnauthorizedAccessExcepti +FullyQualifiedErrorId: VariableNotRemovable,Microsoft.PowerShell.Commands.RemoveItemCommand 变量描述 在New-Variable可以通过-description添加变量描述,但是变量描述默认不会显示,可以通过Format-List查看。 PSC: \>new-variablename-Value"me"-Description"Thisismyname" PSC: \>lsVariable: \name|fl* PSPath: Microsoft.PowerShell.Core\Variable: : name PSDrive: Variable PSProvider: Microsoft.PowerShell.Core\Variable PSIsContainer: False Name: name Description: Thisismyname Value: me Visibility: Public Module: ModuleName: Options: None Attributes: {} Powershell自动化变量 Powershell,程序设计 添加评论 十二072011 Powershell自动化变量是那些一旦打开Powershell就会自动加载的变量。 这些变量一般存放的内容包括 用户信息: 例如用户的根目录$home 配置信息: 例如powershell控制台的大小,颜色,背景等。 运行时信息: 例如一个函数由谁调用,一个脚本运行的目录等。 PSC: \PowerShell>$HOME C: \Users\test PSC: \PowerShell>$currentProcessID=$pid PSC: \PowerShell>$currentProcessID 5356 PSC: \PowerShell>Get-Process-Id$pid HandlesNPM(K)PM(K)WS(K)VM(M)CPU(s)IdProcessName ----------------------------------------------- 3901030604331001721.115356powershell PSC: \PowerShell>$PROFILE C: \Users\test\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 powershell中的某些自动化变量只能读,不能写。 例如: $Pid。 可以通过Get-Helpabout_Automatic_variables查看Automatic_variables的帮助。 TOPIC about_Automatic_Variables 主题 about_Automatic_Variables 简短说明 说明存储WindowsPowerShell状态信息的变量。 这些变量由WindowsPowerShell创建并维护。 详细说明 下面是WindowsPowerShell中的自动变量的列表: $$ 包含会话所收到的最后一行中的最后一个令牌。 $? 包含最后一个操作的执行状态。 如果最后一个操作成功,则包含TRUE,失败则包含FALSE。 $^ 包含会话所收到的最后一行中的第一个令牌。 $_ 包含管道对象中的当前对象。 在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。 $Args 包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。 在创建函数时可以声明参数,方法是使用param关键字或在函数名称后添加以圆括号括起、逗号 分隔的参数列表。 $ConsoleFileName 包含在会话中最近使用的控制台文件(.psc1)的路径。 在通过PSConsoleFile参数启动 WindowsPowerShell或使用Export-Consolecmdlet将管理单元名称导出到控制台文件 时,将填充此变量。 在使用不带参数的Export-Consolecmdlet时,它自动更新在会话中最近使用的控制台文件。 可以使用此自动变量确定要更新的文件。 $Error 包含错误对象的数组,这些对象表示最近的一些错误。 最近的错误是该数组中的第一个错误对象 ($Error[0])。 $Event 包含一个PSEventArgs对象,该对象表示一个正在被处理的事件。 此变量只在事件注册命令(例如Register-ObjectEvent)的Action块内填充。 此变量的值是Get-Eventcmdlet返回的同一个对象。 因此,可以在Action脚本块中使用$Event变量的属性(例如 $Event.TimeGenerated)。 $EventSubscriber 包含一个PSEventSubscriber对象,该对象表示正在被处理的事件的事件订阅者。 此变量只在事件注册命令的Action块内填充。 此变量的值 是Get-EventSubscribercmdlet返回的同一个对象。 $ExecutionContext 包含一个EngineIntrinsics对象,该对象表示WindowsPowerShell主机的执行上下文。 可以使用此变量来查找可用于cmdlet的执行对象。 $False 包含FALSE。 可以使用此变量在命令和脚本中表示FALSE,而不是使用字符串”false”。 如果 该字符串转换为非空字符串或非零整数,则可将该字符串解释为TRUE。 $ForEach 包含ForEach-Object循环的枚举数。 可以对$ForEach变量的值使用枚举数的属性和方法。 此变量仅在运行For循环时存在,循环完成即会删除。 $Home 包含用户的主目录的完整路径。 此变量等效于%homedrive%%homepath%环境变量。 $Host 包含一个对象,该对象表示WindowsPowerShell的当前主机应用程序。 可以使用此变量在命 令中表示当前主机,或者显示或更改主机的属性,如$Host.version、$Host.CurrentCulture 或$host.ui.rawui.setbackgroundcolor(“Red”)。 $Input 一个枚举数,它包含传递给函数的输入。 $Input变量区分大小写,只能用于函数和脚本块。 (脚 本块本质上是未命名的函数。 )在函数的Process块中,$Input变量包含当前位于管道中的对 象。 在Process块完成后,$Input的值为NULL。 如果函数没有Process块,则$Input 的值可用于End块,它包含函数的所有输入。 $LastExitCode 包含运行的最后一个基于Windows的程序的退出代码。 $Matches $Matches变量与-match和-notmatch运算符一起使用。 将标量输入提交给-match或-notmatch运算符时,如果检测到匹配,则会返回一个布尔值, 并使用由所有匹配字符串值组成的哈希表填充$Matches自动变量。 有关-match运算符的详细 信息,请参阅about_comparison_operators。 $MyInvocation 包含一个对象,该对象具有有关当前命令(如脚本、函数或脚本块)的信息。 可以使用该对象中的 信息(如脚本的路径和文件名($myinvocation.mycommand.path)或函数的名称 ($myinvocation.mycommand.name))来标识当前命令。 对于查找正在运行的脚本的名称,这非常有用。 $NestedPromptLevel 包含当前提示级别。 值0指示原始提示级别。 该值在进入嵌套级别时递增,在退出嵌套级别时递减。 例如,在使用$Host.EnterNestedPrompt方法时,WindowsPowerShell会出现嵌套命令 提示符。 在WindowsPowerShell调试程序中到达断点时,WindowsPowerShell也会出现嵌 套命令提示符。 在进入嵌套提示时,WindowsPowerShell暂停当前命令,保存执行上下文,并递增 $NestedPromptLevel变量的值。 要创建更多嵌套命令提示符(最多128级)或返回到原始命 令提示符,请完成命令,或键入”exit”。 $NestedPromptLevel变量有助于跟踪提示级别。 可以创建包含此值的备用Windows PowerShell命令提示符,以使此值始终可见。 $NULL 包含NULL或空值。 可以在命令和脚本中使用此变量表示NULL,而不是使用字符串”NULL”。 如果该字符串转换为非空字符串或非零整数,则可将该字符串解释为TRUE。 $PID 包含承载当前WindowsPowerShell会话的进程的进程标识符(PID)。 $Profile 包含当前用户和当前主机应用程序的WindowsPowerShell配置文件的完整路径。 可以在命令 中使用此变量表示配置文件。 例如,可以在命令中使用此变量确定是否已创建某个配置文件: test-path$profile 也可以在命令中使用此变量创建配置文件: new-item-typefile-path$pshome-force 此外,还可以在命令中使用此变量在记事本中打开配置文件: notepad$profile $PSBoundParameters 包含活动参数及其当前值的字典。 只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。 可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。 例如: functiontest{ param($a,$b) #Displaytheparametersindictionaryformat. $psboundparameters #CalltheTest1functionwith$aand$b. test1@psboundparameters } $PsCmdlet 包含一个对象,该对象表示正在运行的cmdlet或高级函数。 可以在cmdlet或函数代码中使用该对象的属性和方法来响应使用的条件。 例如, ParameterSetName属性包含正在使用的参数集的名称,而ShouldProcess方法将WhatIf 和Confirm参数动态添加到cmdlet。 有关$PSCmdlet自动变量的详细信息,请参阅about_Functions_Advanced。 $PsCulture 包含操作系统中当前所用的区域性的名称。 区域性确定数字、货币和日期等项的显示格式。 这是系 统的System.Globalization.CultureInfo.CurrentCulture.Name属性的值。 要获取系统 的System.Globalization.CultureInfo对象,请使用Get-Culturecmdl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- powershell 完全 学习 手册