百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

「干货」PowerShell入门教程 语法、环境

wptr33 2025-03-30 21:45 22 浏览

PowerShell入门教程
1. 进入Powershell环境
开始--运行--powershell
开始--运行--cmd--powershell
不同系统内置的powershell系统版本是不一样的
查看版本:$psversiontable

2. powershell功能特别强大
使用方便
命令命名方式简单:动词+名词
>get-service 获取系统服务
>get-help get-service 查看命令的帮助信息
面向对象
绑定了.net开发平台
强大的兼容性,与cmd、vbs可直接调用
扩展性:可管理AD域、虚拟化等产品

3. 自定义powershell控制台
右击标题栏--属性
编辑模式--快捷/普通

4. powershell快捷键


ALT+F7 清除命令的历史记录
Pgup Pgdown 翻页
Enter 执行当前命令
End 光标移至末尾
Del 删除光标后的命令字符
ESC 清空当前命令行
F2 自动补充历史命令至指定位置
F4 删除命令行至光标右边指定的字符处
F7 对话框显示命令行历史记录
F8 检索包含指定字符的命令行历史记录
F9 根据编号选择历史命令
上/下 翻看历史命令
左/右 左右移动光标
Home 移至命令行最左端
Backspace 从右侧删除命令行字符
CTRL+C 取消命令执行
Tab 自动补齐命令或文件名


5. 管道和重定向

>ls | Format-Table mode,name

>ls | Format-Table mode,name > 1.txt

>ls | Format-Table mode,name >> 1.txt

>type 1.txt

6. Powershell数学运算符

+ - * / %

7. 执行外部命令

.\ipconfig

.\netstat -na

.\notepad

命令程序必须在system 32目录中

如果命令程序不在目录中,需要将文件复制到目录中或修改环境变量

查看系统变量:$env:Path

添加环境变量:$env:path=$env:path+“目录名称” ----临时生效

图形化设置环境变量 ----永久生效

8. Powershell命令集

查看命令集:get-command

命令类型:Alias 别名

Function 函数

Cmdlet 内部命令

powershell命令是cmd命令的扩展,一般情况下,cmd命令在powershell中是可以使用

查看命令的帮助信息:get-help get-command

查看系统进程:get-process

查看当前会话的别名:get-alias

查看历史命令:get-history

查看日期:get-date

9. Powershell别名使用

get-help get-command

get-childitem命令的别名 dir ls 显示文件

get-alias -name ls 查看是谁的别名

查询以remove开头的别名

Get-Alias | where {$_.definition.startswith("Remove")}

对分组显示的所有别名按个数以降序进行排列

Get-Alias | Group-Object Definition |sort -Descending Count

10. 自定义别名

自定义别名:set-alias -name pad -value .\notepad

删除别名:del alias:pad

导出别名:export-alias demo.ps1

强制导入别名:import-alias -force demo.ps1

11. 变量

定义变量:$name="xiaoming"

$age=25

输出变量:$name

变量对大定是不区分的:$a和$A是同一个变量

定义特殊名称的变量:${i am a”()}=100

定义变量时可以跟表达式:$n=(7*6+8)/2

也可以跟命令:$n=ls

同时给多个变量赋值:$sum1=$sum2=200

12. 变量的操作

改变变量的值:$sum1=10

$sum2=20

$temp=$sum1

$sum1=$sum2

$sum2=$temp

$sum1,$sum2

查看当前使用的变量有哪些:ls variable:

查看指定的变量:ls variable:su*

查看变量是否存在:test-path variable:sum1

删除变量:del variable:sum1

Remove-Variable sum2

13. 自动变量(启动时会自加载,只能读不能改)

$home 当前用户根目录

$pid 当前进程号

$ 上一个命令

$? 上一个命令是否执行成功

$null 空变量

14. 环境变量

查看环境变量:ls env:

ls env:os

$env:name="xiaoming" 添加环境变量

$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_66"

del env:name 删除环境变量

[environment]::setenvironment variable("PATH";"d:\";"user") 修改

[environment]::getenvironment variable("PATH";"d:\";) 显示

15. 脚本执行策略的设置

(1)写一个.bat的脚本程序

echo hello world!!

(2)写一个.ps1的脚本程序

$sum=46

Switch($sum)

{

{$_ -lt 50 -and $_ -gt 40} {"此?数簓小?于?0大洙?于?0"}

{$_ -eq 50} {"此?数簓等台?于?0"}

{$_ -gt 50} {"此?数簓大洙?于?0"}

}

16. 与其他脚本的相互调用

(1)在cmd中运行powershell脚本

C:\Users\ASUS-PC\Desktop>powershell .\demo.ps1

(2)如何Powershell中运行.bat脚本

查看策略:Get-ExecutionPolicy

Restricted 禁止

Get-help set-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned 允许策略

C:\Users\ASUS-PC\Desktop>.\demo.bat

(3)如何在powershell中运行vbs脚本

将vbs脚本拖拽到powershell环境中

17. 条件操作符

算术运算符:-eq -nq -gt -lt -contains -notcontains

89 -eq 99

1gb -gt 1mb

(1,2,3) -contains 1

(1,2,3) -notcontains 1

逻辑运算符:-and -or -not

1,5,9,0 -ne 0 不显示等于0的数字

1,5,9,0 -eq 0 显示等于0的数字

1,5,9,0 -contains 0 判断是否包含0

18. 条件判断:if语句

$num=200

if ($num -gt 90) {"此?数簓大洙?于?0"}

if ($num -lt 90) {"此?数簓小?于?0"}

if ($num -eq 100) {"此?数簓等台?于?00"}

修改为:

$num=80

if ($num -gt 90) {"1"} elseif ($num -lt 90) {"0"} else {90}

19. 条件判断:swith语句

举例1:

$sum=56

Switch($sum)

{

{$_ -lt 50} {"此数小于50"}

{$_ -eq 50} {"此数等于50"} 或 50 {"此数等于50"}

{$_ -gt 50} {"此数大于50"}

}

举例2:

$sum=56

Switch($sum)

{

{$_ -lt 50 -and $_ -gt 40} {"此数小于50大于40"}

{$_ -eq 50} {"此数等于50"}

{$_ -gt 50} {"此数大于50"}

}

20. 循环语句:foreach语句

$arr=1..10

foreach ($n in $arr)

{

$n*$n/2

}

21. 循环语句:while语句

$num=15

while ($num -gt 10)

{

$num

$num=$num-1

}

$num=15

do

{

$num

$num=$num-1

}

while($num -gt 10)

22. Break(跳出整个循环,不再执行)和continue(只跳出满足条件的循环)关键字使用

$num=1

while ($num -lt 10)

{

if ($num -eq 4)

{

break

}

else

{

$num

$num++

}

$num=1

while ($num -lt 6)

{

if ($num -eq 4)

{

$num++

continue

}

else

{

$num

$num++

}

}

23. 循环语句:for语句

$num=0

for ($i=1;$i -le 100;$i++)

{

$num=$num+$i

}

$num

24. 循环语句:switch语句

$num=1..100

Switch ($num)

{

{($_%2) -eq 0} {"(辍?$_)?偶?数簓"}

{($_%2) -eq 1} {"($_)奇?数簓"}

}

25. 数组的创建

$arr=1..10

$arr.GetType()

$arr

26. 访问数组

$arr+="AA" 增加元素到数组

$arr[] 通过索引读取元素

$arr.Count 统计元素个数

$arr 显示数据中的元素

27. 自定义函数及调用

(1)不指定参数

function myping

{

ping http://www.baidu.com

}

myping

(2)传递参数

function myping($site)

{

ping $site

}

myping http://www.baidu.com

function myping($name,$age)

{

$content="I am $name,and I am $age years old!"

write-host $content

}

myping "xiaoming" 25

28. powershell函数返回值

function add($num1,$num2)

{

$sum=$num1+$num2

return $sum

}

add 3 4

查看返回值类型

function add($num1,$num2)

{

$sum=$num1+$num2

$sum.GetType().fullname

return $sum

}

add 3.1 4

返回多个参数的返回值类型

function add($num1,$num2,$sum3)

{

$value=$num1,$num2,$sum3

$value.GetType().fullname

$value[2]

}

add 3 4 9

29. powershell定义文本

打印一句话: 'hello world'

打印一句话带变量: "hello world! $(Get-Date)"

支持表达式:"hello world! $(5*9)"

单引号: '“hello world!” $(5*9)'

转义字符: "hello world!`"$(5*9)`" "

`n 换行符

`r 回车符

`t 制表符

`b 退格符

30. powershell实现用户交互

$input=read-host "请输入你的姓名:"

"你好,你输入的姓名是:$input"

31. powershell格式化字符串

$name="xiaoming"

$age=25

$body="strong"

"my name is $name,i am $age years old,and my body is $body"

name="xiaoming"

$age=25

$body="strong"

"my name is {0},i am {1} years old,and my body is {2}" -f $name,$age,$body

"my name is {0},i am {1} years old,and my body is {2},{3}" -f $name,$age,$body,(3*6)

32. String对象方法

分隔字符串

$str="c:\windows\system32\demo.txt"

$str.Split("\") 分隔字符

$str.Split("\").GetType() 查看类型

$str[0,1] 数组索引

$str.EndsWith("txt") 是否以txt结尾

$str.cont("txt") 是否包含txt字符串

$str.CompareTo("xxy") 字符串是否相等

$str.indexof("w") 字符w的位置

$str.Insert(3,"xxxx") 插入字符

$str.Replace("c","88888") 替换

相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...