POWERSHELL
- 什么是powershell
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。 它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。
Windows PowerShell v3将伴随着MicrosoftHyper-V3.0和Windows Server 2012发布。PowerShell v3是一个Windows任务自动化的框架,它由一个命令行shell和内置在这个.NET框架上的编程语言组成。
PowerShell v3采用新的cmdlet让管理员能够更深入到系统进程中,这些进程可以制作成可执行的文件或脚本(script)。一条cmdlet是一条轻量命令,Windows PowerShell运行时间在自动化脚本的环境里调用它。Cmdlet包括显示当前目录的Get-Location,访问文件内容的Get-Content和结束运行进程的Stop-Process。
PowerShell v3在Windows Server 8中装载了Windows Management Framework 3.0。PowerShell运行时间也能嵌入到其它应用。
- 如和启动powershell
启动方法有如下几种:
a) 直接开始菜单 -> 所有程序 -> Windows PowerShell -> Windows PowerShell(不同系统可能路径不一样)。启动后效果如下:
b) 开始菜单 -> 运行(run) -> 输入”PowerShell”。启动成功后和上图一样。
c) 命令提示符(Command Prompt) -> PowerShell。启动后效果如下:
启动成功后就可以在里面输入要执行的命令了,这就是PowerShell的交互界面。
-
变量
变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。
在Bash shell中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。
这意味着,Bash shell在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。例如在C语言或者C++中,变量分为整数、小数、字符串、布尔等多种类型。
当然,如果有必要,你也可以使用Shell declare关键字显式定义变量的类型,但在一般情况下没有这个需求,,Shell开发者在编写代码时自行注意值的类型即可。
-
变量命名
powershell中变量以美元符”$”开始,其余字符可以是字母、下划线、数字任意字符,不区分大小。 -
变量赋值与交换
-
查看变量
Powershell把变量的相关信息存放在variable:的驱动中。查看所有定义的变量的命令“ls variable:”,查询以a开头的变量如下:
- 环境变量
$env:中的环境变量只是电脑环境变量的一个副本,除了用.NET方法更新环境变量,其他的更改在下一次重新打开时,会恢复如初。
通过$env:提示powershell忽略基本的variable:驱动器,先去环境变量env:驱动器中寻找变量。
通过“ls env:”可以查询所有的环境变量,通过“$env:name”就可以访问指定name的环境变量了。
环境变量的创建和删除:
- 变量的作用域
$global
全局变量,在所有的作用域有效。
$script
脚本变量,在脚本内部有效。
$private
私有变量,在当前作用域有效。
$local
默认变量,在当前作用域有效,其它作用域对它只有可读权限。
- 强类型
给变量指定类型。
-
常量
PowerShell的常量与变量有两处不同的地方:常量的值永远不会变,常量不能被删除。
使用常量之前,必须通过Set-Variable这个cmdlet来创建常量,并且使用一些参数来指定它等于某个常量。
注意:当使用常量的时候,必须用开头,就跟使用普通变量一样。然而,当使用Set−Variable定义常量时,不能用开头,就跟使用普通变量一样。然而,当使用Set-Variable定义常量时,不能用开头,就跟使用普通变量一样。然而,当使用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}}
-
数组
定义:数组即有序的元素序列,把相同类型的若干元素按有序的形式组织起来的一种形式。数组长度不可扩大,其大小由其组成元素决定。
- $array_name=value0,value01,value02 #定义数组,用逗号分开
$array_name=value0…valuen #连续数字用… - $array_name=@() #定义空数组
-
强类型
通过下列的提示符,可以为一个变量强制指定类型。
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) |