ITPub博客

首页 > 数据库 > 数据库开发技术 > PowerShell 02: 打开PowerShell的正确姿势

PowerShell 02: 打开PowerShell的正确姿势

原创 数据库开发技术 作者:招牌鸡蛋面 时间:2020-08-15 23:30:16 0 删除 编辑

从本节开始,我们就开始真正的使用PowerShell了,再次声明一下,本系列文章都是基于Windows PowerShell 5.1版本来讲解和演示的。如何查看PowerShell当前版本,请参考上一篇文章。


学习一种新的脚本语言,最重要的是什么?对,语法格式。打个不太恰当的比方,你之前没打过羽毛球,现在让你去参加比赛,这个时候你首先要了解一下羽毛球的比赛规则,在这个规则之下开始练习发球,接球,杀球等技能。


有点儿扯远了,再扯回来,我们来说一下PowerShell基本语法规则,很简单,就一条,所有的PowerShell命令都遵循一个规则,即:动词-名词(名词词组),比如:


Get-Command

Get-Help

Write-Host


我们就来运行第一条PowerShell命令:Get-Command,我们从开始菜单里先打开Windows PowerShell,然后输入:get-command,然后回车,结果出来了,有很多屏的内容,翻到最上面,见下图,来看一下Name那一列,发现什么规律了么?是不是都是以动词开头,中间一条横线,后面接上名字。恭喜你,PowerShell命令的最基本的规则你已经学会了。


【Tips】

与其它shell类似,PowerShell也是有自动补全命令的功能的。例如,如果你不记得后面名词的单词怎么拼写了,你只需要知道这个单词的头一个或者头几个字母就行,按tab键,PowerShell会帮助你自动补齐的,如果有多条命令都以你输入的那一个或者几个字母开头,那你接着按tab键,PowerShell会自动切换到下一个匹配到的命令。


【试一试】在PowerShell命令行中输入:get-com 然后按tab键,观察第一个匹配到的是哪条命令?然后再按tab键,匹配到哪条命令?接着再按tab键,看看一共匹配到多少条命令。


那我们看看当前PowerShell一共有多少个命令呢?简单,继续输入:Get-Command | measure 然后回车(里面的有一个管道符号:|,初学者可暂时忽略),走你:

PS D:\mylab\pslab> Get-Command | measureCount    : 1596Average  :Sum      :Maximum  :Minimum  :Property :

这系统默认的PowerShell命令就都有1596个,后期如果你写开发PowerShell脚本,可能会引入更多的PowerShell模块,到时候命令比现在的更多。。。我就问你,你怎么能记住这么多?就算是最强大脑的神人,估计也很难记住这么多的PowerShell命令了。那怎么搞?不急,你不需要死记硬背那么多命令如何拼写,只需要告诉PowerShell你想用它来做关于哪方面的活就可以了。比如说你想了解关于network有哪些PowerShell命令,那你就输入:

Get-Command *network*

PS D:\mylab\pslab> Get-Command *network*                                                                                CommandType     Name                                               Version    Source-----------     ----                                               -------    ------Function        Add-NetEventNetworkAdapter                         1.0.0.0    NetEventPacketCaptureFunction        Add-NetEventVmNetworkAdapter                       1.0.0.0    NetEventPacketCaptureFunction        Add-VpnConnectionTriggerTrustedNetwork             2.0.0.0    VpnClientFunction        Disable-NetworkSwitchEthernetPort                  1.0.0.0    NetworkSwitchManager...              ...                                ...            1.0.0.0    PcsvDeviceFunction        Set-VpnConnectionTriggerTrustedNetwork             2.0.0.0    VpnClientApplication     gatherNetworkInfo.vbs                              0.0.0.0    C:\Windows\system32\gatherNetworkInfo.vbs


又比如说你想了解关于service,有哪些PowerShell命令,那你就输入:

Get-Command *service*  

PS D:\mylab\pslab> Get-Command *service*                                                                                CommandType     Name                                               Version    Source-----------     ----                                               -------    ------Function        Get-NetFirewallServiceFilter                       2.0.0.0    NetSecurityFunction        Set-NetFirewallServiceFilter                       2.0.0.0    NetSecurityCmdlet          Get-Service                                        3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          New-Service                                        3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          New-WebServiceProxy                                3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          Restart-Service                                    3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          Resume-Service                                     3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          Set-Service                                        3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          Start-Service                                      3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          Stop-Service                                       3.1.0.0    Microsoft.PowerShell.ManagementCmdlet          Suspend-Service                                    3.1.0.0    Microsoft.PowerShell.ManagementApplication     AgentService.exe                                   10.0.18... C:\Windows\system32\AgentService.exeApplication     FMService64.exe                                    0.1.0.23   C:\Windows\system32\FMService64.exeApplication     RtkAudUService64.exe                               1.0.192.1  C:\Windows\system32\RtkAudUService64.exeApplication     SecurityHealthService.exe                          4.18.19... C:\Windows\system32\SecurityHealthServ...Application     SensorDataService.exe                              10.0.18... C:\Windows\system32\SensorDataService.exeApplication     services.exe                                       10.0.18... C:\Windows\system32\services.exeApplication     services.msc                                       0.0.0.0    C:\Windows\system32\services.mscApplication     TieringEngineService.exe                           10.0.18... C:\Windows\system32\TieringEngineServi...Application     Windows.WARP.JITService.exe                        0.0.0.0    C:\Windows\system32\Windows.WARP.JITSe...


发现了么?Get-Command这条PowerShell命令是支持模糊查询的,而且还很准确。这条命令也算是高频PowerShell命令了。那现在我让你查找一下关于共享文件夹的PowerShell命令,你会了嘛?


是的,在PowerShell命令行工具里,只要输入:Get-Command *fileshare*  

PS D:\mylab\pslab> Get-Command *fileshare*                                                                              CommandType     Name                                               Version    Source-----------     ----                                               -------    ------Function        Block-FileShareAccess                              2.0.0.0    StorageFunction        Debug-FileShare                                    2.0.0.0    StorageFunction        Get-FileShare                                      2.0.0.0    StorageFunction        Get-FileShareAccessControlEntry                    2.0.0.0    StorageFunction        Grant-FileShareAccess                              2.0.0.0    StorageFunction        New-FileShare                                      2.0.0.0    StorageFunction        Remove-FileShare                                   2.0.0.0    StorageFunction        Revoke-FileShareAccess                             2.0.0.0    StorageFunction        Set-FileShare                                      2.0.0.0    StorageFunction        Unblock-FileShareAccess                            2.0.0.0    Storage


那如果我这么输入呢?

PS D:\mylab\pslab> get-command *file*

还有这样?

PS D:\mylab\pslab> Get-Command *share*

观察一下上面3个命令的运行结果,是不同?还是相同?为什么呢?这个就算是本节的课后作业吧!这节课就先讲到这里,下课!



如果喜欢这篇文章,请点个赞,转发一下呗!


本人微信号,欢迎骚扰!


扫码关注微信公众号,都是干货哦!


点个赞,点个在看呗!~


原文作者:BPShare;如有侵权,请联系管理员删除。

下一篇: PowerShell 01:简介
请登录后发表评论 登录
全部评论
干过测试,做过运维,还兼职过售前+投标+实施+售后+客户培训。前两年入坑大数据开发,熟悉Azure + Databricks大数据相关产品。 喜欢研究技术,所以搞了一个公众号:BPShare,分享一些经验和心得。欢迎骚扰~~~

注册时间:2020-02-17

  • 博文量
    90
  • 访问量
    44237