Powershell基础知识


Powershell基础知识


Windows PowerShell 是windows平台下一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。对比下vbs和批处理

Powershell基础知识

简直是神级的脚本了~(尤其是可以使用Native commands, COM对象和.Net对象)

而且,随着.net core的出现,powershell 已经在linux和mac也可以用了。这个才是真的跨平台脚本shell语言啊

作为一门如此强大的脚本,肯定是有复杂性的。虽然如此,可以通过三个命令,来“自学”,它们就是Get-help, Get-command, Get-member (望文生义,语义比较强)以一个为例

<code>PS C:\\Users\\Administrator> Get-Help Get-Process 名称    Get-Process  摘要    获取在本地计算机或远程计算机上运行的进程。语法    Get-Process [[-Name] <string>] [-ComputerName <string>] [-FileVersionInfo] [-Module] [<commonparameters>]    Get-Process -Id <int32> [-ComputerName <string>] [-FileVersionInfo] [-Module] [<commonparameters>]    Get-Process -InputObject <process> [-ComputerName <string>] [-FileVersionInfo] [-Module] [<commonparameters>]说明    Get-Process cmdlet 获取本地或远程计算机上的进程。    如果没有参数,则 Get-Process 获取本地计算机上的所有进程。还可以通过进程名称或进程 ID (PID) 来指定特定进程,或将进程对象通过管道传送给 Get-Process。    默认情况下,Get-Process 将返回一个进程对象,该对象包含有关进程的详细信息并且支持允许您启动和停止进程的方法。还可以使用 Get-Process 的参数来获取进程中运行的程序的文件版本信息以及获取进程加载的模块。相关链接    Online version: http://go.microsoft.com/fwlink/?LinkID=113324    Get-Process     Start-Process     Stop-Process     Wait-Process     Debug-Process 备注    若要查看示例,请键入: "get-help Get-Process -examples".    有关详细信息,请键入: "get-help Get-Process -detailed".    若要获取技术信息,请键入: "get-help Get-Process -full"./<commonparameters>/<string>/<process>/<commonparameters>/<string>/<int32>/<commonparameters>/<string>/<string>/<code>

还可以带-examples参数来获取提供的例子

以上知道后,来写个PS脚本运行吧? 且慢传统的批处理、vbs脚本,写完后保存,直接双击就可以运行。如果是ps脚本,这样是行不通的。需要设置执行策略Set-ExecutionPolicy 有四种策略:- Restricted——默认的设置, 不允许任何script运行- AllSigned——只能运行经过数字证书签名的script- RemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名- Unrestricted——允许所有的script运行

入门级知识点有:1.Write-Host/Write-Debug ... 等等Write系列的2.Get-member/Get-Process/Get-Date3.变量的定义

<code>PS C:\\Users\\Administrator> $a="i am ps"PS C:\\Users\\Administrator> "$a"i am psPS C:\\Users\\Administrator> '$a'$a单引号和双引号是有差别的/<code>

类型也可以强制声明PS C:\\Users\\Administrator> [int]$i=10

4.Where-Object

<code>PS C:\\Users\\Administrator> $p = Get-Process | Where-Object {$_ -like "*qq*"}PS C:\\Users\\Administrator> $pHandles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName          -------  ------    -----      ----- -----   ------     -- -----------    1176      99   147560      90480   491    22.12   4348 QQ      305      36    11700        980   153     0.47   6232 QQPCNetFlow      323      49    21372      34836   160     4.54   4240 QQPCRealTimeSpeedup    696      61    30960      16036   265     7.08    972 QQPCRTP           1274      87    40860      13056   330    10.03   2724 QQPCTray             355      29    16820       6072   121     0.67   2660 QQProtect  /<code>

4.函数的定义function TestFunc([string]$pa){#function body}函数的调用 TestFunc "test"5.Get-Process | Out-File -Append txt.txt或者 Get-Process >> txt.txt (使用重定向符)6. 其他好玩的比如一下(很像Python啊)

<code>PS C:\\Users\\Administrator> 3*4*560    PS C:\\Users\\Administrator> [math]::pi3.14159265358979PS C:\\Users\\Administrator> "*"*10**********/<code>


分享到:


相關文章: