目录
数学运算
我们可以把powershell当成一个计算器。象键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。
PowerShell也能自动识别计算机容量单位,包括KB,MB,GB,TB,PB
假如一个网站每个页面大小为80kb,统计显示每天的页面浏览量为800,1个月下来占用的带宽:
假如一个网站的每天人均页面浏览量为5,页面大小为80Kb,主机提供商限制的总流量为10G,那平均每天的最大访客数为:
执行外部命令
Powershell 能够像CMD一样很好的执行外部命令。
通过netstat查看网络端口状态
通过IPConfig查看自己的网络配置
route print查看路由信息
启动CMD控制台
启动CMD控制台键入cmd或者cmd.exe,退出cmd可以通过命令exit。
查找可用的Cmd控制台命令
Cmd.exe 通过 /c 来接收命令参数,在Cmd中help可以查看可用的命令,所以可以通过Cmd /c help 查找可用的Cmd控制台命令
启动外部程序
键入notepad.exe打开记事本
为什么可以通过notpad打开记事本,不能通过wordpad打开写字板?
因为notepad.exe位于C:Windows\system32 这个目录,而这个目录已经默认被包含在Powershell的环境变量$env:Path中。
别名
在linux系统中有一些系统命令比较长,不容易记忆,为了更方便的使用系统命令,系统允许为命令定义别名。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir
查看可用别名
查看可用的别名,可以通过” ls alias:” 或者 ”Get-Alias“
创建别名
给记事本创建一个别名,并查看该别名;
删除自己的别名
别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用del命令。
保存自己的别名
可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。但是导入时可能会有异常,提示别名已经存在无法导入:这时可以使用Force强制导入。
通过函数扩展列名
在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息。尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection -Count 2 -ComputerName,让-“-Count 2” 固化在别名中。
这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活。有了函数牵线,别名可以完成更高级更强大的功能,其中$args为参数的占位符。
执行文件和脚本
像运行可执行文件一样,Powershell运行文件和脚本,也必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中。脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码。批处理是扩展名为”.bat”的文本文件,它可以包含任何cmd控制台能够处理的命令。当批处理文件被打开,Cmd控制台会逐行执行每条命令。那Powershell能够直接执行批处理吗?
执行批处理文件
例:将下列命令保存为ping.bat,存放在D盘中。
@echo off echo batch File Test pause Dir %windir%/system
然后双击执行ping文件,屏幕会打印ping命令帮助,说明调用的ping cmd 而不是ping.bat。
改为:./ping,这时运行的是批处理。
通过cmd进入cmd控制台输入ping发现执行的不是ping命令,而是直接运行ping.bat ,也就是说可以通过.bat 覆盖cmd命令。这种机制很危险,如果有人侵入电脑,并将系统内部命令篡改成自己批处理,那就太悲剧了。 这种命令与脚本的混淆不会发生在powershell中,因为powershell有更安全的机制。
执行VB脚本文件
例:将下列命令保存为test.vbs,
Set wmi = GetObject("winmgmts:") Set collection = wmi.ExecQuery("select * from Win32_Process") For Each process in collection WScript.Echo process.getObjectText_ Next
执行 .\test.vbs 会遍历当前Win32进程,并把每个进程的详细信息通过窗口显示出来。
怎样让VB脚本的通过控制台输出呢?
Wscript //H:CScript
怎样还原VB脚本通过窗口输出呢?
WScript //H:WScript
在powershell中执行VB脚本
执行powershell脚本
Powershell拥有自己的脚本,扩展名为“.ps1”。
注:初次执行脚本时,可能会碰到一个异常:
File ” C:\PS\test.ps1″ cannot be loaded because the
execution of scripts is disabled on this system. Please see
“get-help about_signing” for more details.
At line:1 char:10
+ .test.ps1 <<<<
这是powershell的默认安全设置禁用了执行脚本,要启用这个功能需要拥有管理员的权限。
powershell调用入口的优先级
别名
:控制台首先会寻找输入是否为一个别名,如果是,执行别名所指的命令。因此我们可以通过别名覆盖任意powershell命令,因为别名的优先级最高。
函数
:如果没有找到别名,会继续寻找函数,函数类似别名,只不过它包含了更多的powershell命令。因此可以自定义函数扩充cmdlet 把常用的参数给固化进去。
命令
:如果没有找到函数,控制台会继续寻找命令,即cmdlet,powershell的内部命令。
脚本
:没有找到命令,继续寻找扩展名为“.ps1”的Powershell脚本。
文件
:没有找到脚本,会继续寻找文件,如果没有可用的文件,控制台会抛出异常。
The term ‘now’ is not recognized as the name of a cmdlet, function, script file, or operable program. Chec
g of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:4
+ now <<<<
+ CategoryInfo : ObjectNotFound: (now:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException