powershell学习随笔

  • 本笔记主要用于快速回顾知识点,请不要将其当做系统的powershell教程

1. 数学运算符

  • 1gb/1mb
  • 1gb/1mb*18kb
  • 1gb -gt 1mb ->-gt用于判断是否相等
  • 0xabc ->会自动转换为十进制

2. powershell执行外部命令

  • 输入&"notepad" 或 输入:notepad均可 -> 打开notepad
  • &"绝对路径"
  • 题外话:
    • 使用$env:path ->可以查看系统变量
    • $env:path=$env:path+"绝对路径" ->使用命令添加环境变量(只生效一次)

3. powershell命令集

  • powershell的目录基本上都采用:动词+名词 的形式
  • get-command:可以查看所有命令
  • get-help:查看命令帮助
  • get-process:获取进程信息
  • get-alias:获取当前会话的别名
  • get-history:浏览历史命令
  • get-date:获取当前时间

4. powershell别名

  • get-help 命令 :也可以用来查看该命令是否有别名
  • get-alias -name 命令:可以用来查看该命令的真实名称
  • get-alias | where
    • $_:表示当前的元素
  • get-alias | group-object definition | sort -descending Count:将别名最多的排在最前面
  • set-alias -name 别名 -value 被命名别名的命令(自定义别名,临时生效)
    • set-alias -name pad -value notepad
  • del alias:别名(删除别名)
  • export-alias demo.ps1(导出别名信息)
  • import-alias -force demo.ps1(导入别名信息)

5. powershell变量基础

  • 定义一个字符串变量:
    • $name="xiaoming"(字符串型)
    • 打印$name变量:$name
  • 定义一个数字型变量:
    • $age=26(数字型)
  • 定义一个花里胡哨的变量:
    • ${"i am a" var()}="hello"
    • 打印:$
    • 如果你的变量名如上非常花里胡哨,最好加一个大括号括住你的变量名(当然,肯定是不建议使用这样的变量名的)
  • $变量名=数学表达式
    • $n=(7*6+8)/2
    • $n
  • $变量名=命令
    • $n=ls
    • $n
  • 可以同时为变量$num1和$num2赋值:35
    • $num1=$num2=35
    • $num1
    • $num2
  • 注意:
    1. powershell中对大小写不敏感,$a与$A是相同的

6. powershell变量操作

  • 交换变量值
    $num1=10
    $num2=20
    $num1,$num2=$num2,$num1
    
  • 判断变量是否存在
    • test-path variable:变量名
    • test-path variable:num1(查看变量num1是否存在)
  • 查看变量
    • ls variable:(查看当前正在使用的变量)
    • ls variable:num*(查看以num开头的变量)
    • ls vatiable:变量名(查看指定变量名的变量)
  • 删除变量
    • del variable:变量名
  • 当然也可以使用一下命令来操作变量,可以达到与上面命令相同的效果:
    • get-variable 变量名(查看变量)
    • remove-variable 变量名(删除变量)
    • new-variable 变量名(将变量变为只读)

7. powershell自动化变量

  • 所谓的“自动化变量”就是指:powershell一旦打开就会自动加载的变量
    • $home:当前用户的根目录
    • $pid:当前powershell会话的进程标识符(只读)
    • $$:显示上一条所运行的命令
    • $?:显示上一条命令是否成功运行

8. powershell环境变量

  • 查看当前的环境变量
    • ls env:
  • 查找以na开头的环境变量
    • ls env:na*
  • 打印环境变量的OS的值
    • $env:OS
  • 自定义/更新环境变量的值(临时生效)
    • $env:name="liming"
  • 删除环境变量
    • del env:name
  • 设置和获取【用户环境变量】(只对当前用户生效)

9. powershell脚本执行策略

  • 获取powershell当前执行的脚本策略
    • get-executionpolicy
  • 设置powershell当前执行的脚本策略
    • set-executionpolicy 策略
    • set-executionpolicy RemoteSigned

10. powershell与其他脚本程序的互相调用

  • 执行bat脚本/vbs脚本/powershell脚本
    • 直接绝对路径/相对路径进行运行
  • 在cmd中执行powershell脚本
    • powershell "&'demo.ps1'"

11. powershell条件操作符

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -le:小于等于
  • -not:取反
  • -and:与
  • -or:或
  • -xor:异或
  • -contains:包含
    • (1,2,3) -contains 1 返回true
  • -notcontains:不包含
  • 筛选出不等于1的值:1,2,3,4 -ne 1

12. powershell条件判断

  • 【if】
    • 实例:
    $num=100
    if($num -gt 90) {"1"} else {"-1"}
    if($num -gt 100) {"1"} elseif($num -eq 100) {"0"} else{"-1"}
    
  • 【switch】
    • 实例(if)
      $number=55
      if($number -gt 50 -and $number -lt 60){
          "此数值大于50小于60"
      }elseif($number -eq 50){
          "此数值等于50"
      }else{
          "此数字小于50"
      }
      
    • 实例(switch)
      $number=50
      switch($number){
          {($_ -lt 50) -and ($_ -gt 40)} {"此数字小于50且大于40"}
          {$_ -eq 50} {"此数值等于50"} 这行代码也可以写为:50 {"此数字等于50"}
          {$_ -gt 50} {"此数值大于50"}
      }
      

13. powershell循环结构

  1. 【foreach】
    • 实例1:
      $arr=1..10
      foreach($n in $arr){
          $n*$n+10
      }
      
    • 实例2:
      $path_value=dir f:\all  --将命令的执行结果赋值给 $path_value变量
      foreach($file in $path_value){
          if($file.length -gt 1kb){
              $file.name
          }
      }
      
  2. 【while】
    • 实例1:(while)
      $num=15
      while($num -gt 10){
          $num
          $num=$num-1
      }
      
    • 实例2:(do while)
      $num=15
      do{
          $num
          $num=$num-1
      }while($num -gt 10)
      
  3. 【for】
    • 实例1:
      $sum=0
      for($i=1;$i -le 100;$i++){
          $sum=$num+$i
      }
      $sum
      
  4. 【switch循环】
    • 实例1:
      $num=1..10
      switch($num){
          default{"number=$_"}
      }
      
    • 实例2:
      $num=1..10
      switch($num){
          {($_ % 2) -eq 0} {"$_是偶数"}
          {($_ % 2) -ne 0} {"$_是奇数"}
      }
      
  5. break和continue关键字的使用
    • 实例1:(break)
      $num=1
      while($num -lt 6){
          if($num -eq 4){
              $num++
              break
          }else{
              $num
              $num++
          }
      }
      
    • 实例2:(continue)
      $num=1
      while($num -lt 6){
          if($num -eq 4){
              $num++
              continue
          }else{
              $num
              $num++
          }
      }
      

14. powershell数组的创建与访问

  • 定义数组:
    • $arr1 -is [array] -用来判断是否是数组
    $arr1=1,2,3,4
    $arr2=1..5
    $arr3=1,"hello world"
    $arr4=@() -->空数组
    $arr4=@(1,2,3,4)
    $arr5=,"nicai",1
    $arr6=ipconfig
    
  • 访问数组:
    $arr=1,"hello world",(get-date)
    $arr[0]               -->访问第一个元素
    $arr[0,1]             -->访问第一个和第二个元素
    $arr[-1]              -->访问最后一个元素
    $arr[0..2]            -->访问第1,2,3元素
    $arr[0..2].count      -->访问元素的个数
    $arr[($arr.count)..0] -->逆序访问
    
  • 为数组添加元素:
    $arr=1,"nicai",(get-date)
    $arr.count
    $arr+="hahaha"
    $arr.count
    

15. powershell自定义函数和调用

  1. 函数的定义与调用:
    • 实例1:
      function myping($site){
          ping $site
      }
      myping www.baidu.com -->调用
      
    • 实例2:
      function my($name,$age){
          $content="i am $name, and i am $age years old"
          write-host $content
      }
      my "nicai" 25
      
  2. 函数的返回值
    • 实例1:
    function add($num1,$num2){
        $sum=$num1+$num2
        return $sum
    }
    add 1 3
    
    • 实例2:
    function add($num1,$num2){
        $sum=$num1+$num2
        $sum.gettype().fullname -->返回值的类型全名
        return $sum
    }
    add 3 4
    
    • 实例3:
    function add($num1,$num2){
        return $num1,$num2  -->可以返回多个值
    }
    add 3 4
    
    • 实例4:
    function add($num1,$num2,$num3){
        $value=$num1,$num2,$num3
        $value.gettype() -->返回的结果为:数组类型
        return $value
    }
    add 1 2 3
    

16. powershell定义文本

  • 实例1:
"hello world $(get-date)"
"hello my name is 'nicai'" -->这样写可以将单引号显示出来
"hello my name is `"nicai`"" -->powershell中将反引号作为转义符号
"你好`n朋友" -->powershell的换行符:`n

17. powershell实现用户交互

  1. 接收用户输入:
$input=read_host "请输入您的姓名"
"您好,您输入的姓名是:$input"

18. powershell格式化字符串

  • 实现格式化需要参数:-f
  • 实例1:
$name="nicai"
$age=25
$body="strong"
"My name is $name, i am $age years old, and my body is $body"
"My name is {0}, i am {1} years old, and my body is {2},{3}" -f $name,$age,$body,(3*6) -->格式化输出(效果与上面的相同)

19. powershell字符串对象方法

  • 实例1:
$str="c:\windows\system32\demo.txt"
$str.split("\").gettype()
$str.split(".")[-1]     -->返回字符串“txt”
$str.endwith("txt")     -->判断该字符串是否是以字符串来结尾的
$str.contains("window") -->判断该字符串是否包含“window”
$str.compareto("nicai") -->判断两字符串是否相同(相同返回0,不同返回-1)
$str.indexof("w")       -->查出“w”字母的下标
$str.insert(3,"hahaha") -->在索引3之后插入字符串“hahaha”
$str.replace("c","d")   -->将c替换成d

posted @ 2022-02-15 16:08  浅易深  阅读(221)  评论(0编辑  收藏  举报