poweshell系列学习笔记一:基础

目录

一、PowerShell是什么

二、PowerShell的安装

三、快捷键

四、数学运算

五、执行外部命令

六、powershell命令集

七、别名

八、执行脚本和文件

 

一、PowerShell是什么

powershell是一个跨平台的任务自动化和配置管理框架,也就是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。powershell需要.NET环境的支持,同时也支持.NET对象。

powershell和windows的cmd、linux的bash很相似,但是又有些许不同。它可以跨平台,传递的是.net对象而不是raw字符串,有面向对象的管道,也能调用.NET的许多功能,听起来很强大吧,所以power呢~

二、PowerShell的安装

https://www.pstips.net/powershell-introduction-and-install.html

查看powershell当前版本

$PSVersionTable.PSVersion

三、快捷键

ALT+F7      清除命令的历史记录
PgUp PgDn    显示当前会话的第一个命令和最后一个命令
Enter       执行当前命令
End         将光标移至当前命令的末尾
Del        从右开始删除输入的命令字符
Esc        清空当前命令行
F2        自动补充历史命令至指定字符(例如历史记录中存在Get-Process,按F2,提示"Enter char to copy up to",键入‘s’,自动补齐命令:Get-Proce)
F4        删除命令行至光标右边指定字符处
F7        对话框显示命令行历史记录
F8        检索包含指定字符的命令行历史记录
F9        根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看
左/右方向键    左右移动光标
上/下方向键    切换命令行的历史记录
Home        光标移至命令行最左端
Backspace    从右删除命令行字符
Ctrl+C        取消正在执行的命令
Ctrl+左/右方向键    在单词之间移动光标
Ctrl+Home       删除光标最左端的所有字符
Tab        自动补齐命令或者文件名

四、数学运算

powershell支持数学运算,可以在其中进行加减乘除等运算,回车后powershell会将结果输出(+,-,*,/,%)  

 

 

同时,powershell还能识别计算机容量单位

五、执行外部命令

内部命令是随每次启动的command.com装入du并常驻内存,而外部命令是一条单独的可执行文件。在操作时要记住的是,内部命令在任何时候都可以使用,而外部命令需要保证命令文件在当前的目录中,或已经被加载了路径。

powershell可以像cmd一样很好的执行外部命令,如ipconfig、route print(打印路由表)、netstat、nc等

可以输入cmd或cmd.exe来打开cmd程序

 当在powershell中输入一串字符串时,powershell会原样输出,但如果这个字符串是一个程序的名字,那么在字符串前加一个&符号,powershell会执行这个程序

六、powershell命令集

cmdlets是Powershell的内部命令

cmdlet是command-let的缩写,这相当于命令提示符窗口的命令行,所有cmdlet都以标准的“动词-名词”格式命名的,方便我们理解和记忆,如Get-Command命令,就是获得(动词)—命令(名词),输入该命令回车后,Windows PowerShell会为我们显示所有的命令,一共263条哦

常用cmdlet命令:

  1、Get-Command

  用于检索所有可用cmdlet的列表。

  2、Get-Help

  用于显示有关cmdlet和概念的帮助信息。

  3、Get-WMIObject

  用于通过WMI来检索管理信息。

  4、Get-EventLog

  用于检索Windows事件日志。

  5、Get-Process

  用于检索单个活动进程或活动进程的列表。

  6、Get-Service

  用于检索 Windows 服务。

  7、Get-Content

  用于读入文本文件,将每行视为一个子对象。

  8、Add-Content

  用于将内容附加到文本文件。

  9、Copy-Item

  用于复制文件、文件夹和其他对象。

  10、Get-Acl

  用于检索访问控制列表(ACL)。

七、别名

cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:

    • 继承:继承unix-shell和windows-cmd。
    • 方便:方便用户使用。

查看别名所指的真实cmdlet命令

Get-Alias -name 命令

查看可用的别名:

dir alias: | where {$_.Definition.Startswith("Get")}  //查看Get开头的cmdlet命令的别名

 dir alias:获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在powershell中使用非常广泛。

查看所有别名和指向cmdlet的别名的个数

ls alias: | Group-Object definition | sort -Descending Count

 创建自己的别名,但是这样创建的别名会在powershell退出时自动删除

 删除内置别名

del alias:命令

八、执行脚本和文件

Powershell运行文件和脚本必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中。

脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码。

批处理是扩展名为”.bat”的文本文件,它可以包含任何cmd控制台能够处理的命令。当批处理文件被打开,Cmd控制台会逐行执行每条命令。

首先保存这段代码作为ping.bat文件

@echo off
echo batch File Test
pause
Dir %windir%/system

以下左边为cmd执行ping命令,右边为powershell执行ping命令,可以看到区别,在cmd中直接执行了ping.bat文件,这是十分危险的,如果有人入侵电脑,并在这个ping.bat文件内写入有害代码,那么在无意中,受害者输入了ping命令,恶意代码就会被直接执行。而在powershell中,输入ping则还是ping命令,这个机制就比较安全。

 在powershell中只有这样才会运行批处理文件

运行vbs文件

直接运行

PS C:UsersOODesktoppowershell> & '.	est .vbs'

在powershell中运行

PS C:PS> cscript.exe .test.vbs 

 

运行powershell文件

PS C:UsersOODesktoppowershell> .	est.ps1

参考:https://www.pstips.net/powershell-online-tutorials

原文地址:https://www.cnblogs.com/xiaoxiaosen/p/13435153.html