记录一下关于Powershell的基础语法
变量
变量都是以$开头, 是强类型语言, 语言是大小写不敏感的 提一提变量保护与常量的声明:New-Variable num -Value 100 -Force -Option readonly这样就得到一个受保护的变量$num,如果要销毁它只能通过del $num删除。如果要声明常量则用New-Variable num -Value 100 -Force -Option readonlyNew-Variable num -Value 100 -Force -Option constant
声明num变量:
声明num常量:
数组
数组的创建:
数组的创建可以通过下面五种方式来创建,在适当的条件下选择适当的方式创建即可
$array = 1,2,3,4 $array = 1..4 $array=1,"2017",([System.Guid]::NewGuid()),(get-date) $a=@() # 空数组 $a=,"1" # 一个元素的数组
数组的访问:
数组的访问和C类似,第一位元素实用下标0来访问即$array[0]
,我们来看看ipconfig获取到的数据
$ip = ipconfig $ip[1] # 获取ipconfig第二行的数据
数组的判断
$test -is [array]
数组的追加:
$books += "元素4"
哈希表
哈希表的创建:
$stu=@{ Name = "test";Age="12";sex="man" }
哈希表里存数组:
$stu=@{ Name = "hei";Age="12";sex="man";Books="kali","sqlmap","powershell" }
哈希表的插入与删除:
$Student=@{}
$Student.Name="hahaha" $stu.Remove("Name")
对象
在powershell中一切都可以视为对象,包罗万象New-Object可以创建一个对象Add-Member可以添加属性和方法
控制语句
条件判断
比较运算符
-eq :等于 -ne :不等于 -gt :大于 -ge :大于等于 -lt :小于 -le :小于等于 -contains :包含 $array -contains something -notcontains :不包含 !($a): 求反 -and :和 -or :或 -xor :异或 -not :逆 if-else if-else: if($value -eq 1){ code1 }else{ code2 }
循环语句
while while($n -gt 0){ code } for $sum=0 for($i=1;$i -le 100;$i++) { $sum+=$i } $sum foreach # 打印出windows目录下大于1mb的文件名 foreach($file in dir c:windows) { if($file.Length -gt 1mb) { $File.Name } } foreach-object # 获取所有的服务,并获取对呀进程ID是否大于100 Get-WmiObject Win32_Service | ForEach-Object {"Name:"+ $_.DisplayName, ", Is ProcessId more than 100:" + ($_.ProcessId -gt 100)}
函数
function Invoke-PortScan { <# .SYNOPSIS 简介 .DESCRIPTION 描述 .PARAMETER StartAddress 参数 .PARAMETER EndAddress 参数 .EXAMPLE PS > Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.0.254 用例 #> code }
异常处理
Try{ $connection.open() $success = $true }Catch{ $success = $false }