powershell基础语法

变量

可以将变量当作是一个框,可以往这个框放入很多的东西,并且给这个框起一个名字。对变量进行命名的时候一般都是用驼峰命名法,字母+数字+下划线的组合
变量都是以$开头, 是强类型语言, 语言是大小写不敏感的,使用=未变量进行赋值,这个和python和任何的现代编程语言都是一样的。

注意$只是为了声明变量,并不是变量名称的一部分吗,例如$aa,就是变量aa的意思,也就是变量的名字就叫做aa,而不是$aa

提一提变量保护与常量的声明:New-Variable num -Value 100 -Force -Option readonly这样就得到一个受保护的变量$num,如果要销毁它只能通过del $num删除。如果要声明常量则用New-Variable num -Value 100 -Force -Option constant

数组

数组的创建:

数组的创建可以通过下面五种方式来创建,在适当的条件下选择适当的方式创建即可,在power shell中的数组和python中的类似,数组中的每个元素都是用逗号隔开,但是在python中数组是需要用中括号来包裹的,比如numpy array

  1. $array = 1,2,3,4
  2. $array = 1..4
  3. $array=1,"2017",([System.Guid]::NewGuid()),(get-date)
  4. $a=@() # 空数组
  5. $a=,"1" # 一个元素的数组

数组的访问

数组的访问和C类似,第一位元素实用下标0来访问即$array[0],我们来看看ipconfig获取到的数据

  1. $ip = ipconfig
  2. $ip[1] # 获取ipconfig第二行的数据

数组的判断

  1. $test -is [array]

数组的追加:

  1. $books += "元素4"

哈希表

哈希表的创建:

  1. $stu=@{ Name = "test";Age="12";sex="man" }

哈希表里存数组:

  1. $stu=@{ Name = "hei";Age="12";sex="man";Books="kali","sqlmap","powershell" }

哈希表的插入与删除:

  1. $Student=@{}
  2. $Student.Name="hahaha"
  3. $stu.Remove("Name")

控制语句

条件判断

比较运算符

  1. -eq :等于
  2. -ne :不等于
  3. -gt :大于
  4. -ge :大于等于
  5. -lt :小于
  6. -le :小于等于
  7. -contains :包含
  8. $array -contains something
  9. -notcontains :不包含
  10. !($a): 求反
  11. -and :和
  12. -or :或
  13. -xor :异或
  14. -not :逆

if-else

  1. if-else:
  2. if($value -eq 1){
  3. code1
  4. }else{
  5. code2
  6. }

循环语句

while

  1. while($n -gt 0){
  2. code
  3. }

for

  1. $sum=0
  2. for($i=1;$i -le 100;$i++)
  3. {
  4. $sum+=$i
  5. }
  6. $sum

foreach

  1. # 打印出windows目录下大于1mb的文件名
  2. foreach($file in dir c:\windows)
  3. {
  4. if($file.Length -gt 1mb)
  5. {
  6. $File.Name
  7. }
  8. }

break、Continue、Return

  1. # Break 旨在中断循环。 它通常与 switch 语句一起使用
  2. for ($i = 1; $i -lt 5; $i++) {
  3. Write-Output "Sleeping for $i seconds"
  4. Start-Sleep -Seconds $i
  5. break
  6. }
  7. # Continue 旨在跳到循环的下一次迭代
  8. while ($i -lt 5) {
  9. $i += 1
  10. if ($i -eq 3) {
  11. continue
  12. }
  13. Write-Output $i
  14. }
  15. # Return 旨在退出现有作用域
  16. $number = 1..10
  17. foreach ($n in $number) {
  18. if ($n -ge 4) {
  19. Return $n
  20. }

函数

  1. function Invoke-PortScan {
  2. <#
  3. .SYNOPSIS
  4. 简介
  5. .DESCRIPTION
  6. 描述
  7. .PARAMETER StartAddress
  8. 参数
  9. .PARAMETER EndAddress
  10. 参数
  11. .EXAMPLE
  12. PS > Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.0.254
  13. 用例
  14. #>
  15. code
  16. }