Powershell 变量和常量
Power Shell是一门语言,因此也有变量和常量。不同于其他强类型语言,在PowerShell的脚本中,变量无需预先定义就可以直接使用。当你使用一个变量时,变量被自动地声明。了解Windows Power Shell的变量和常量,是灵活编写脚本程序的基础。
变量以$符号开头: $a
 强类型变量主要存在于一些编译型的语言,如C和C++。这种语言往往要求在使用一个变量之前必须先进行声明,而且在声明的时候必须注明变量的类型,如整形,浮点型,字符型等。编译器根据变量的类型,为变量静态地分配内存空间
 强类型变量主要存在于一些编译型的语言,如C和C++。这种语言往往要求在使用一个变量之前必须先进行声明,而且在声明的时候必须注明变量的类型,如整形,浮点型,字符型等。编译器根据变量的类型,为变量静态地分配内存空间 
![clip_image001[1] clip_image001[1]](https://lo6oxa.blu.livefilestore.com/y1mv0Wc-RKyQjIJbM_0G1KzSUbgpZnb9rTvTJA9wSqaTJlmtOHWlWi42HHYZ9ysf2BtF0ypFAcxPvZ6aBWehougZXmLxUquuo6voqony90AprCIBzEFG1N2cHH1XPpaZjtgdFDGwQlE-Vw/clip_image001[1]_thumb.gif) PowerShell的变量使用方式跟Perl类似,无论何时,当需要使用变量时,都要用$带出变量名字。
 PowerShell的变量使用方式跟Perl类似,无论何时,当需要使用变量时,都要用$带出变量名字。 
在PowerShell中,有一系列特殊变量,这些变量都是系统自动创建并且具有特殊含义的。注意:用户自己定义的变量名称不应该与这些特殊变量相同。
![clip_image001[2] clip_image001[2]](https://lo6oxa.blu.livefilestore.com/y1m1MCoPZm8jfBfS4AvMylAPT4g9xhuscRmzsQrqDH2VKOtI-XJ1xBknkaGTt_Pdf2hdp_VhHBos6Ou_Uegwk60fmz9_KfqhHhlAiwFXGNk3o4gB5UL58HwjOHf6jb7_IDJr3Jp4rcBYEQ/clip_image001[2]_thumb.gif) 下表中的特殊变量,很有意思,但不太好记。对于了解“正则表达式”的程序员来说,比较好记:首先它们是变量,那么肯定是$符号开头,然后在正则表达式中,^符号表示文本行的开始,$符号表示结束,因此$^在PowerShell中表示第一个命令行,$$就表示最后一个命令行,取的就是“最开始”和“最后一个”的意思。$_在Perl的循环体中,也是用于表示当前循环的迭代变量,因此了解一点Perl,对于学习PowerShell还是有些帮助。对于没有Perl基础的人而言,根本就不要去记,用多了自然就记住了,没记住之前就查资料就行了,人脑多用来思考,让电脑帮人记忆吧。
 下表中的特殊变量,很有意思,但不太好记。对于了解“正则表达式”的程序员来说,比较好记:首先它们是变量,那么肯定是$符号开头,然后在正则表达式中,^符号表示文本行的开始,$符号表示结束,因此$^在PowerShell中表示第一个命令行,$$就表示最后一个命令行,取的就是“最开始”和“最后一个”的意思。$_在Perl的循环体中,也是用于表示当前循环的迭代变量,因此了解一点Perl,对于学习PowerShell还是有些帮助。对于没有Perl基础的人而言,根本就不要去记,用多了自然就记住了,没记住之前就查资料就行了,人脑多用来思考,让电脑帮人记忆吧。 
下表列举了PowerShell的特殊变量:
| Name | Use | 
| $^ | Contains the first token of the last line input into the shell | 
| $$ | Contains the last token of the last line input into the shell | 
| $_ | The current pipeline object; used in script blocks, filters, Where-Object, ForEach-Object, and Switch | 
| $? | Contains the success/fail status of the last statement | 
| $Args | Used in creating functions requiring parameters | 
| $Error | If an error occurred, the error object is saved in the $error variable. | 
| $ExecutionContext | The execution objects available to cmdlets | 
| $foreach | Refers to the enumerator in a foreach loop | 
| $HOME | The user's home directory; set to %HOMEDRIVE%\%HOMEPATH% | 
| $Input | Input is piped to a function or code block. | 
| $Match | A hash table consisting of items found by the -match operator | 
| $MyInvocation | Information about the currently executing script or command-line | 
| $PSHome | The directory where PS is installed | 
| $Host | Information about the currently executing host | 
| $LastExitCode | The exit code of the last native application to run | 
| $true | Boolean TRUE | 
| $false | Boolean FALSE | 
| $null | A null object | 
| $this | In the Types.ps1xml file and some script block instances, this represents the current object | 
| $OFS | Output Field Separator used when converting an array to a string | 
| $ShellID | The identifier for the shell. This value is used by the shell to determine the ExecutionPolicy and what profiles are run at Startup | 
| $StackTrace | Contains detailed stack trace information about the last error 
 
 
 
 
 | 
使用普通变量
l 给变量赋值: $a = “This is a string”
l 连接两个字符串变量:
$a = “This is the 1st string.”
$b=” This is the 2nd string.”
$c=$a+” and ”+$b
$c
| This is the 1st string. and This is the 2nd string. | 
数组
在Perl或者vbscript中创建一个数组已经是够简单了,然而在PowerShell中,创建一个数组则更加简单:
$arrName = "LOGONSERVER","HOMEPATH", "APPDATA","HOMEDRIVE"
使用数组,跟VBScript一样:$arrName[0]
强制指定变量类型
通过下列的提示符,可以为一个变量强制指定类型。
| Alias | Type | 
| [int] | 32-bit signed integer | 
| [long] | 64-bit signed integer | 
| [string] | Fixed-length string of Unicode characters | 
| [char] | A Unicode 16-bit character | 
| [bool] | True/false value | 
| [byte] | An 8-bit unsigned integer | 
| [double] | Double-precision 64-bit floating point number | 
| [decimal] | An 128-bit decimal value | 
| [single] | Single-precision 32-bit floating point number | 
| [array] | An array of values | 
| [xml] | Xml objects | 
| [hashtable] | A hashtable object (similar to a dictionary object) | 
例如:[int]$b=5,表示$b这个变量只能包含整数值,而不能包含其他类型的值。如果我们写出这样的语句:[int]$b=”abc”,则运行时系统会报告错误。
使用常量
PowerShell的常量与变量有两处不同的地方:常量的值永远不会变,常量不能被删除。
使用常量之前,必须通过Set-Variable这个cmdlet来创建常量,并且使用一些参数来指定它等于某个常量。
注意:当使用常量的时候,必须用$开头,就跟使用普通变量一样。然而,当使用Set-Variable定义常量时,不能用$符号开头。
$aryComputers = "loopback", "localhost"
Set-Variable -name intDriveType -value 3 -option constant
foreach ($strComputer in $aryComputers)
{"Hard drives on: " + $strComputer
Get-WmiObject -class win32_logicaldisk -computername $strComputer|
Where {$_.drivetype -eq $intDriveType}}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号