AI智能
改变未来

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 {$_.definition.startswith("Remove")}$_:表示当前的元素
  • 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"
    • 打印:${"i am a" var()}
    • 如果你的变量名如上非常花里胡哨,最好加一个大括号括住你的变量名(当然,肯定是不建议使用这样的变量名的)
  • $变量名=数学表达式
      $n=(7*6+8)/2
    • $n
  • $变量名=命令
      $n=ls
    • $n
  • 可以同时为变量$num1和$num2赋值:35
      $num1=$num2=35
    • $num1
    • $num2
  • 注意:
      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=100if($num -gt 90) {"1"} else {"-1"}if($num -gt 100) {"1"} elseif($num -eq 100) {"0"} else{"-1"}~~~
  • 【switch】
      实例(if)~~~$number=55if($number -gt 50 -and $number -lt 60){"此数值大于50小于60"}elseif($number -eq 50){"此数值等于50"}else{"此数字小于50"}~~~
    • 实例(switch)~~~$number=50switch(number){{(_ -lt 50) -and (_ -gt 40)} {"此数字小于50且大于40"}{_ -eq 50} {"此数值等于50"} 这行代码也可以写为:50 {"此数字等于50"}{$_ -gt 50} {"此数值大于50"}}~~~

    13. powershell循环结构

    1. 【foreach】
        实例1:~~~$arr=1..10foreach($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=15while($num -gt 10){$num$num=$num-1}~~~
      • 实例2:(do while)~~~$num=15do{$num$num=$num-1}while($num -gt 10)~~~
    3. 【for】
        实例1:~~~$sum=0for($i=1;$i -le 100;$i++){$sum=$num+$i}$sum~~~
    4. 【switch循环】
        实例1:~~~$num=1..10switch(num){default{"number=_"}}~~~
      • 实例2:~~~$num=1..10switch(num){{(_ % 2) -eq 0} {"_是偶数"}{(_ % 2) -ne 0} {"$_是奇数"}}~~~
    5. break和continue关键字的使用
        实例1:(break)~~~$num=1while($num -lt 6){if($num -eq 4){$num++break}else{$num$num++}}~~~
      • 实例2:(continue)~~~$num=1while($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+$num2return $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
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » powershell学习随笔