PowerShell命令与脚本(2)——交互式命令

PowerShell进行数学运算

我们可以把powershell当成一个计算器。像键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。
PowerShell也能自动识别计算机容量单位,包括KB,MB,GB,TB,PB。
 

PowerShell执行外部命令

Powershell 能够像CMD一样很好的执行外部命令。
1、通过netstat查看网络端口状态
 
2、通过IPConfig查看自己的网络配置
 
3、route print查看路由信息
 
4、启动CMD控制台
启动CMD控制台键入cmd或者cmd.exe,退出cmd可以通过命令exit。
查找可用的Cmd控制台命令
Cmd.exe 通过 /c 来接收命令参数,在Cmd中help可以查看可用的命令,所以可以通过Cmd /c help 查找可用的Cmd控制台命令
 
5、查看环境变量
由于cmd中的set命令与PowerShell原生的命令冲突,所以可以使用cmd /c set 命令查看环境变量。
当然PowerShell中能用$env:后跟变量名,来查看环境变量的值。
 
6、&执行字符串形式的命令
默认键入一个字符串,powershell会将它原样输出,如果该字符串是一个命令或者启动程序,在字符串前加‘&’可以执行命令,或者启动程序。
 

PowerShell命令集与帮助系统

PowerShell在设计之初就考虑到易用性,因为我们的运维系统管理人员实在是太忙碌了,所以你可以从它的每个标准的命令名上就大致能猜出这个命令是做什么的,从他的命名结构也可以发现均按照“动词-名词”形式命名。
对于接触这样一门脚本语言时,你可以使用命令Get-Command查看所有当前系统中包含的各种命令。PowerShell有三种命令类型,分别是:Alias(别名),Function(功能)和Cmdlet(命令行)
就像你看到的PowerShell中那么多的命令,而且还会随着每次版本更新不断增长的几百个命令以外,那些额外的工具模块包里包含着更多的命令,难道我们要一个个命令学过去才能学好PowerShell吗?显然答案是否定的。在这个地球上没人能做到每个命令都学习一遍。
所以,当你遇到任何不会使用的命令的时候记得,使用Get-Help命令去查看某个命令如何使用就行了。比如我不知道Get-Process命令怎么用呢,难道每次遇到不会用的问题就去问别人吗?甚至连搜索引擎都不需要,直接就可以使用Get-Help -Name Get-Process就行了。
甚至,我可以使用命令行Get-Help -Name Get-Help来查看下Get-Help怎么用.
虽然我们知道这个命令主要是用来查看命令的使用的,但是通过这个方式就可以发现原来还可以配合许多额外的参数,比如Get-Help Get-Process -Full你可以查看完整更详细的帮助信息,加上-Online参数你可以直接打开该命令最新的网页帮助信息页。你甚至可以仔细阅读所显示的具体命令帮助信息配合里面的参数使用例子得到更详细的信息。
 
由于PowerShell命令的结构是动词-名词 (-参数名 实参) 。所以记住一些常用的动词可以减少对命令的记忆量。使用Get-Verb 可以查看PowerShell中所有的动词。
 

PowerShell别名

1、别名的说明
PowerShell命令的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:lsdir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:
① 继承:继承unix-shell和windows-cmd。
② 方便:方便用户使用。
 
2、查看别名
查看可用的别名,可以通过” ls(或dir) alias:” 或者 ”Get-Alias
 
如何查看别名所指的真实PowerShell命令?
可以使用name参数,如查看ls和cd命令别名的真实命令,Get-Alias -name ls,cd
如果要查看单个别名的真实命令,也可以用 ls(或dir) alias:dir
 
如何查看真实命令的所有别名?
可以使用Definition参数,如查看真实命令名为Remove-Item的别名,
Get-Alias -Definition Remove-Item
 
如何查看所有以Remove打头的命令的别名?
可以运用管道符来实现,ls alias: | Where {$_.definition.startswith("Remove")}
 
说明:Get-Alias获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在PowerShell中使用非常广泛。
也可以用通配符(*)来实现,Get-Alias -Definition Remove-*
 
有的PowerShell命令可能有2-3个别名,我们可以通过下面的命令查看所有别名和指向cmdlet的别名的个数,并对其进行降序排序。
ls alias: | Group-object definition | sort -Descending Count
 
 
3、自定义别名
1.创建自己的别名
给记事本创建一个别名,并查看该别名;
Set-Alias -Name Edit -Value notepad
我们只需要输入edit,回车就可以打开记事本
 
2.删除自己的别名
别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用 del alias:Edit
 
3.导出别名与导入别名
可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。
 
将别名为Edit及其值导出到Edit.ps1
Export-Alias -Name Edit Edit.ps1
 
将Edit.ps1文件中的别名及其值导入到PowerShell
Import-Alias Edit.ps1
如果提示别名已存在,可加上Force参数强制导入。
 
4、通过函数扩展别名
在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息。尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?
例如Test-Connection -Count 2 -ComputerName,让-“-Count 2” 固化在别名中。
这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活。
有了函数牵线,别名可以完成更高级更强大的功能,其中$args为参数的占位符。
 

执行PowerShell脚本

Powershell拥有自己的脚本,扩展名为“.ps1”
初次执行脚本时,可能会碰到一个异常:
这是powershell的默认安全设置禁用了执行脚本,要启用这个功能需要拥有管理员的权限。
在管理员权限下执行命令: Set-ExecutionPolicy RemoteSigned 并选择 是(y)
 
注意:在PowerShell中执行程序、脚本、可执行文件的时候要在前面加上.\绝对路径
在执行多条命令时,要用分号(;)隔开,分号前的命令优先级大于分号后的。
 
posted @ 2021-06-24 20:36  Ulysses~  阅读(771)  评论(0编辑  收藏  举报