powershell和cmd区别 您所在的位置:网站首页 cmd和shell powershell和cmd区别

powershell和cmd区别

2024-01-26 14:53| 来源: 网络整理| 查看: 265

cmd是和powershell都可以做命令行交互,批处理和powershell脚本功能也相当。

我不知道你怎么理解cmd,但下面是powershell是基于.net的,只要你足够了解.net,你可以使用她做任何你想做的事情。

Windows PowerShell 是专为系统管理员设计的新 Windows 命令行 shell。Windows PowerShell 包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

与接受和返回文本的大多数 shell 不同,Windows PowerShell 是在 .NET Framework 公共语言运行时 (CLR) 和 .NET Framework 的基础上构建的,它接受和返回 .NET Framework 对象。环境中的这一根本更改带来了管理和配置 Windows 的全新工具和方法。

Windows PowerShell 引入了 cmdlet(读作“command-let”)的概念,这是内置到 shell 中的一个简单的单一功能命令行工具。可以分别使用每个 cmdlet,但是组合使用这些简单的工具执行复杂任务时才发挥其作用。Windows PowerShell 包括一百多个基本的核心 cmdlet,您可以编写自己的 cmdlet 并与其他用户共享它们。

与许多 shell 一样,Windows PowerShell 为您提供了对计算机上文件系统的访问。此外,使用 Windows PowerShell 提供程序还可以访问其他数据存储,如注册表和数字签名证书存储,就像访问文件系统一样容易。

简单的说,Powershell是cmd的超集,换句话说,cmd能做的事情,Powershell都能做,但是Powershell还能额外做许多cmd不能做的活。

主要是系统管理功能、脚本语言和在线帮助更强大,你确实可以只把它当成cmd来用,也可以学和用得更深

powershell的优点

没有做不到,只有想不到。用 PowerShell 甚至可以 Load C/C++ 写的 dll,然后执行里面的代码,COM 就不说了。跑题了,题主问不同,窃以为 PowerShell 和 cmd 最大的不同,并且也是和其它 *nix Shell 最大的不同在于 PowerShell 的 pipe 传递的是 .net object,而不是 raw 字符串,于是这就打开了一扇神奇的大门,因为 PowerShell 的一切组件都可以和谐地共存,彼此不用互相猜忌,不用猜你喂给我的数据合不合法,也不用担心我喂给你的参数格式对不对。大家共享一个 CLR,拥有丰富的 metadata,自由自在地在 .net 的世界里徜徉和探索。顺带宣传一下 https://chocolatey.org/ ,Windows 的 apt-get,基于 PowerShell

PowerShell为什么强大

微软是一个很”低调”的公司,取名为微软,感觉有“微微软下去”的意思,这是个玩笑了。windows 操作系统 和office办公软件,如此之优秀,微软也没敢命名为PowerOS 和 PowerOffice,但是在Monad(PowerShell的前身)发布后的第二年(2006年),微软就直接就发布了Windows PowerShell 1.0,并且”大言不惭“地命名为PowerShell,这也有点太不淡定了。

今天我根据自己的体验来稍微总结一下为什么PowerShell如此之强大。

破天荒的方便

诸如存储计算中GB,MB,KB单位等;数组声明中的1..n和下标为-1的处理;还有所见即所得,通俗易懂的动词+名词结构Cmdlet。

面向对象

与面向过程相比,面向对象更方便更容易描述现实世界,也算赶上了时髦。

绑上.NET这棵大树

正所谓大树下面好乘凉,PowerShell绑上.NET这个大款了,借助.NET Framework平台强大的类库,几乎让一切都成为可能。

强大的兼容性

完全兼容windows 平台上其它调用,如可执行文件(exe),批处理bat和vb script等。

基于平台的可扩展性

微软有个优点,与应用相比,它更喜欢做平台。PowerShell早已变成一个平台,在PowerShell 刚发布的第二年,微软的System Center Operations Manager 和 SharePoint就提供了针对该平台的组件,后来的活动目录,Hyper-V,Windows Azure,Office 365就更不用说了。除了微软,亚马逊的云平台管理,Dell的out-of-hand 管理,也都提供了基于PowerShell的管理组件。PowerShell 俨然变成了一个标准,变成了一个规范。

举例介绍 如果您第一次听说过PowerShell,想稍微观望下,且看下面的10个例子。

[数学计算] (39+79-51)*497/28 = ? 心算再快,应当也没有敲回车键快吧:

? 1 2 PS> (39+79-51)*497/28 1189.25

[日期] 距离下一个情人节还有多少分钟? 我知道距离多少天好算,如果变成分钟呢?

? 1 2 3 4 5 6 7 8 $now=Get-Date $day=[datetime]'2-14' if($now -lt $day ){ $day.Subtract($now).TotalMinutes } else{ $day.AddYears(1).Subtract($now).TotalMinutes }

[容量] 3GB > 3145726KB吗 ?

? 1 2 PS> 3gb -gt 3145726kb True

[ID]能产生一个GUID吗?

? 1 2 3 4 5 PS> [guid]::NewGuid()   Guid ---- 0f283ab4-f402-400c-98ce-359442f11f1a

[文件] Windows目录下所有可执行文件exe的大小是多少?

? 1 dir $env:windir -Filter *.exe | measure -Sum Length

[注册表] 注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 下 ‘Enable64Bit'的值是多少?

? 1 (Get-ItemProperty -Path hklm:SOFTWARE\Microsoft\.NETFramework ).Enable64Bit

[证书] 指纹为[28DE15612AFF1CD69596AB17AF06AE86CB9C003B]的证书在证书存储区吗?

? 1 2 ls Cert:\LocalMachine\My\ | where { $_.Thumbprint -eq '28DE15612AFF1CD69596AB17AF06AE86CB9C003B' }

[服务] 打印机服务有没有启动呢?

? 1 Get-Service spooler

[进程] 当前运行了多少个IE进程?

? 1 (Get-Process iexplore ).count

[报表] 将所有运行的进程信息导出为HTML报表?

? 1 Get-Process | ConvertTo-Html | Out-File a.html

现在知道了powershell的强大了吧,在windows平台powershell还是比较好用的。

 

--Windows常用工具类:

运行程序                         运行命令记事本                            notepad计算器                            calc画图                               mspaint写字板                            writeWindows放大镜             magnify辅助工具管理器               utilmanTelnet客户端                   telnet任务管理器                      taskmgr关闭Windows                 shutdown扫描仪与相机                   sticpl.cpl远程桌面                          mstsc可移动存储                       ntmsmgr.msc注册表编辑器                    regeditTrueType造字程序            eudcedit打印机文件夹                    printers打印机和传真                    control printers控制面板                           control屏幕键盘                           osk 网络连接                           ncpa.cpl 或control netconnections从Windows注销               logoff 字体文件夹                       fonts 或control fonts磁盘管理                          diskmgmt.msc快速查找                          findfast.cpl磁盘碎片整理程序            dfrg.msc磁盘检查工具                   chkdsk磁盘清理工具                   cleanmgr剪贴簿查看器                   clipbrd辅助功能选项                   access.cpl添加硬件向导                   hdwwiz.cpl添加或删除程序                appwiz.cpl常用管理配置工具 设备管理器                        devmgmt.msc Direct X控制面板(如果已经安装) directx.cplDirect X诊断工具                dxdiag磁盘分区管理器                   diskpart 显示属性                             desk.cpl 或 control desktop文件夹选项                          control folders显示属性的外观选项卡         control color文件签名验证                       sigverifIP配置实用程序                    ipconfig键盘属性                             control keyboard鼠标属性                             main.cpl 或 control mouseInternet属性                       inetcpl.cpl密码属性                             assword.cpl电话与调制解调器选项         telephon.cpl电源选项属性                       powercfg.cpl性能                                     perfmon区域和语言选项                    intl.cpl系统属性                              sysdm.cpl用户帐户管理                       nusrmgr.cplWindows防火墙                  firewall.cpl运行Windows更新               wupdmgr系统配置实用程序                msconfig声音和音频设备属性             mmsys.cpl共享文件夹                           fsmgmt.msc服务                                     services.mscWindows安全中心               wscui.cpl————————————————

下面我们看看能由Windows PowerShell完成的最常见的25个任务。不止是这些任务很简单,显示语句的命令架构和其他PowerShell命令也很简单。掌握好这些基本命令是成为PowerShell专家的必经之路。

  入门级别

  1. 像文件系统那样操作Windows Registry——cd hkcu:  2. 在文件里递回地搜索某个字符串——dir –r | select string "searchforthis"     3. 使用内存找到五个进程——ps | sort –p ws | select –last 5  4. 循环(停止,然后重启)一个服务,如DHCP——Restart-Service DHCP  5. 在文件夹里列出所有条目——Get-ChildItem – Force  6. 递归一系列的目录或文件夹——Get-ChildItem –Force c:\directory –Recurse  7. 在目录里移除所有文件而不需要单个移除——Remove-Item C:\tobedeleted –Recurse  8. 重启当前计算机——(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)

  收集信息

  9. 获取计算机组成或模型信息——Get-WmiObject -Class Win32_ComputerSystem  10. 获取当前计算机的BIOS信息——Get-WmiObject -Class Win32_BIOS -ComputerName .  11. 列出所安装的修复程序(如QFE或Windows Update文件)——Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .  12. 获取当前登录计算机的用户的用户名—— Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .  13. 获取当前计算机所安装的应用的名字——Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1  14. 获取分配给当前计算机的IP地址——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress  15. 获取当前机器详细的IP配置报道——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*  16. 找到当前计算机上使用DHCP启用的网络卡——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .  17. 在当前计算机上的所有网络适配器上启用DHCP——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}

  软件管理

  18. 在远程计算机上安装MSI包——(Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)  19. 使用基于MSI的应用升级包升级所安装的应用——(Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)  20. 从当前计算机移除MSI包——(Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()  机器管理  21. 一分钟后远程关闭另一台机器——Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE  22. 添加打印机——(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection(\\printerserver\hplaser3)  23. 移除打印机——(New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")  24. 进入PowerShell会话——invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有