Windows PowerShell(微软公司开发的任务自动化和配置管理框架)

由网友(熟男日记)分享简介:Windows PowerShell[一] 是微硬私司开垦的使命主动化以及配置办理框架,由.NET Framework以及.NET Core是构修的号令行界面壳层相干剧本言语构成,最后只是是Windows组件,后于二零一六年八月一八日开源并跨平台撑持。正在PowerShell中,办理使命凡是由cmdlets(发音为co妹妹a...

Windows PowerShell[1] 是微软公司开发的任务自动化和配置管理框架,由.NET Framework和.NET Core是构建的命令行界面壳层相关脚本语言组成,最初仅仅是Windows组件,后于2016年8月18日开源并跨平台支持。

windows升级powershell

在PowerShell中,管理任务通常由cmdlets(发音为command-lets)执行,这是执行特定操作的专用.NET类。可以将cmdlet集合至脚本、可执行文件(一般是独立应用程序)中,或通过常规.NET类(或WMI / COM对象)实例化。通过访问不同数据存储中的数据由PowerShell运行,如资源管理器或注册表。

外文名

Windows PowerShell

开发公司

微软公司

源起与目的

UNIX 系统一直有着功能强大的壳程式(shell),Windows PowerShell 的诞生就是要提供功能相当于 UNIX 系统 BASH 的命令列壳程式,同时也内建脚本语言以及辅助脚本程式的工具。

程式特性

一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。

脚本语言简单易学,而且能支援现有的脚本程式和命令列工具。

内含129种称为 cmdlet 的标准工具,可用来处理常见的系统管理工作。

具备完整的扩充功能,独立软件商或开发者都能很容易的自行扩充。

cmdlet 是 Windows PowerShell 的指令,发音念法为 command-let。这相当于 DOS 或其他壳程式的内建指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如线上查询说明的 cmdlet 指令为 get-help,名称的动词部分大致有 get、set、add、remove 等等(字母都不分大小写)。

技术基础

Windows PowerShell 是以 .NET Framework 技术为基础,并且与现有的 WSH 保持回溯相容,因此它的脚本程式不仅能存取 .NET CLR,也能使用现有的 COM 技术。同时也包含了数种系统管理工具、简易且一致的语法,提升管理者处理,常见如登录数据库、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等服务器软件都将内建 Windows PowerShell。

范例

停止所有目前执行中的以"p"字符开头命名的程式: PS> get-process p* | stop-process

停止所有目前执行中的所有使用大于1000MB内存的程式: PS> get-process | where { $_.WS -gt 1000MB } | stop-process

计算一个目录下档案内的字节大小: PS> get-childitem | measure-object -property length -sum

等待一个叫做"notepad"的程式执行结束: PS> $processToWatch = get-process notepad PS> $processToWatch.WaitForExit()

将"hello, world!"字串转为英文大写字符,成为"HELLO, WORLD!": PS> "hello, world!".ToUpper()

在字串"string"的第1个字符后插入字串"ABC",成为"sABCtring": PS> "string".Insert(1, "ABC")

订阅一个指定的RSS Feed并显示它最近8个主题: PS> $rssUrl = "https://blogs.msdn.com/powershell/rss.aspx" PS> $blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl) PS> $blog.rss.channel.item | select title -first 8

把"$UserProfile"设定成数值"UserProfile"的环境变量: PS> $UserProfile = $env:UserProfile

12项酷功能

解答PowerShell:PowerShell原来的开发代号是Monad,原计划是用以替代Windows中的命令行工具,但是后来微软说它只是技术上的扩充。使用PowerShell,管理员可以做任何在图形界面下所做的事情。Windows PowerShell 1.0可以运行在Windows XP SP2、Windows Server 2003和Windows Vista上。

  1. 内置Cmdlets (即"commandlets")

  Windows PowerShell中的所有Cmdlets都允许这样的动名词:get-service, get-process, stop-service, get-wmiobject.

  2. 强大的通配符和操作对象

  要得到以w开头的服务及其依赖服务只要输入:

  PS> get-service w*   format-list DisplayName, DependentServices

  3. 在犯错误前测试命令

  Windows PowerShell 有意向独特的功能:Whatif ,可以不执行命令就告诉你命令执行结果.如:

  PS> stop-service w3* -whatif

  4. 获取副本

  PowerShell 可以开始和结束所有命令的副本,可以在脚本中轻易测试命令并同时保存.

  PS> Start-Transcript -Path c:demodfoshow.txt

  PS> Stop-Transcript

  5. 从命令行发布Windows对话

  因为Windows PowerShell位对象而优化,可以向.NET Framework一样从命令行访问COM对象,下列命令告诉你的Vista机器发表"Windows Vista and PowerShell"字串.

  PS> $spVoice = new-object -com "SAPI.spvoice"

  PS> $spVoice.Speak("Windows Vista and PowerShell")

  6. 使用Windows PowerShell访问诸如Windows Media Player 11等的应用程序

  PS> $band = "The Posies"

  PS> $player = New-object -com wmplayer.ocx

  PS> $playlist = $player.mediacollection.getbyauthor($band)

  PS> $player.openPlayer($playlist.item(0).sourceurl)

  7. Windows PowerShell作为命令行存储计算器

  PowerShell可以完成基本的计算工作

  PS> 2*2

  不过,Windows PowerShell也可以快速解决存储问题,例如,备份11GB的数据需要多少个700MB的CD.

  PS> 11gb/700mb

  那么,需要多少个1000GB的存储来备份每个320GB,共425个的Vista桌面呢?

  PS > (320gb*425)/1000GB

  8. PowerShell 用作日历计算

  计算多少天到新年:

  PS> ([DateTime]"1/1/2007" -[datetime]::now).days

  9. 返回机器上某种类型文件的数量

  Windows Vista有许多类型的事件记录和组策略文件等.下列命令是返回当前目录及其子目录中VBScript, Bat 和 PowerShell 脚本的数量:

  PS> dir -include *.vbs, *.ps1, *.bat -recurse   group-object extension -noelement

  10. 从命令行收集Windows System Assessment Tool数据

  PS> get-wmiobject win32_winsat   format-table __SERVER, *SCORE -autosize

    PS> get-wmiobject win32_winsat   select *score   out-chart -Title "System Assessment Scores by PowerGadgets"

  11. 配置UAC(User Account Control)

  PS> set-itemproperty -path HKLM:SOFTWAREMICROSOFTWINDOWSCurrentVersionPoliciesSystem -name ConsentPromptBehaviorAdmin -value 0

  12. 管理BitLocker

  PS > $drives = get-wmiobject -namespace root CIMv2SecurityMicrosoftVolumeEncryption -class Win32_Encryptable Volume

  PS> $drives   format-table DriveLetter, Persistent VolumeID -autosize

  PS> $BitLockDrive = $drives[0]

  PS> $BitLockDrive.GetProtectionStatus()

  PS> $BitLockDrive.DisableKeyProtectors()

  PS> $BitLockDrive.EnableKeyProtectors()

阅读全文

相关推荐

最新文章