powershell是一个外壳,但并非同与cmd.exe,powershell具备内置的脚车编写语言,不过比cmd.exe更为灵活,灵活是指不多的语句就能够自动执行极其复杂的任务。javascript
从安全角度考虑,默认状况下powershell并不会容许运行脚本,只能交换的来运行单个命令,若是启用了脚本编写,则可令powershell仅运行通过数字签名的脚本。html
快速入门十大cmdletjava
Get-Command 用于检索全部可用 cmdlet 的列表。shell
Get-Help 用于显示有关 cmdlet 和概念的帮助信息。安全
Get-WMIObject 用于经过 WMI 来检索管理信息。ide
Get-EventLog 用于检索 Windows 事件日志。函数
Get-Process 用于检索单个活动进程或活动进程的列表。工具
Get-Service 用于检索 Windows 服务。测试
Get-Content 用于读入文本文件,将每行视为一个子对象。spa
Add-Content 用于将内容附加到文本文件。
Copy-Item 用于复制文件、文件夹和其余对象。
Get-Acl 用于检索访问控制列表 (ACL)。
全部的cmdlet都是以“动词-名词”格式命名,便于记忆
例如:Get-Command
该命令将会列出全部cmdlet列表
cmdlet甚至有快捷名称,称为别名,对于Get-WMIObject,只要键入gwmi便可,运行Get-Alias将列出快捷名称列表。
powershell是在MS Microsoft® .NET Framework 构建的,因此彻底是面向对象的,面向对象对于管理员的好处就是节省大量时间,由于只需在基于文的外壳内就能直接处理丰富的对象。
例:
Get-process | Sort-Object pm -desc | Select -Object -first 10
使用管道将三个不一样的命令组合使用,以上命令显示结果为机器上十大物理内存使用者。
powershell中的对象使用很是广泛,这全仰仗于它的变量,而且没必要先声明变量,只需在变量名称前放置一个美圆符号($)就可使用它们了。尽管不是必需的,但您也能够将所要放入变量的数据类型告知 PowerShell。这使得 PowerShell 能够将变量映射到某一种极其强大的 .NET Framework 类型,从而为您提供诸多附加的内置功能。
例如,假设您想要提示输入计算机名称并从该计算机中检索服务包版本,可是您不知道键入的计算机名称是否会包括两个反斜线(如 \\Server2)。因为您知道 Get-WMIObject cmdlet 不须要反斜线,所以您能够将计算机名称保存到一个字符串变量中,而后使用 Replace 方法以空字符串替换反斜线,以下所示:
[string]$c = Read-Host "Enter computer name"
$c = $c.Replace("\","")
Get-WMIObject Win32_OperatingSystem
–Property ServicePackMajorVersion
–Computer $c
已在 $c 变量中提供了 –Computer 参数的值。该变量最初是做为字符串而建立的,所以它具备 .NET Framework 字符串类型的全部功能,包括 Replace 方法。
若是您键入 $c = $c.(不要忘了句号)并按 Tab,PowerShell 将显示 Clone(),这是字符串类型的第一个方法。若是您一直按 Tab,PowerShell 将会循环列出全部可用的方法。实质上,当您这样作时,PowerShell 是在向您展现它所知道的字符串处理方法。
然而,编写一行命令和参数无助于可读性。PowerShell 容许您将其拆分红更具可读性的形式,您甚至不用编写脚本就能将其直接键入外壳。这就是它可能的形式:
PowerShell 决不仅有函数和 cmdlet。让咱们以文件管理为例来快速了解一下其中还蕴藏着什么别的内容。您可能对 Cmd.exe 中的驱动器和文件夹导航再熟悉不过了 — 键入 C: 可切换到 C 驱动器,键入 cd \test 可转入 C:\Test 文件夹。PowerShell 的工做方式彻底相同,不过 cd 只是 Set-Location cmdlet 的别名。
PowerShell 在设计时很注重安全保护。PowerShell 中主要的安全功能是它的执行策略。默认状况下,此策略设置为“Restricted”,您能够经过运行 Get-ExecutionPolicy cmdlet 来进行验证。在 Restricted 模式下,不能运行脚本。就这么简单。因为这是默认模式,所以刚出盒的 PowerShell 不能用来运行脚本。
PowerShell 还具备使实验变得更加安全的功能。例如,请考虑(但请勿尝试)这个使人惧怕的组合:
在 PowerShell 中运行此命令会产生一组语句,它们会告诉您 cmdlet 将会作什么,而不会真的让它们这样作。PowerShell 中的在线帮助系统(可经过 help 别名访问)还没有记载 –Whatif 参数,但请记住它。它是一个很好的工具,用于测试脚本和 cmdlet 以检验其结果,而不会实际作出任何具备潜在危害性和破坏性的事情。