分享

从零开始powershell,认识一下目前最为强大的shell工具

 山峰云绕 2023-05-07 发布于贵州

https://www.toutiao.com/article/7229894938857914932/?log_from=91e10ae61e22a_1683389901465

首先我们按下键盘中的win徽标键+s按键,会弹出如下一个窗口,我们在搜索那里输入 powershell,如果你有经常使用powershell的话,会在最近使用的软件中看到了powershell的选项,我们直接点击就可以打开powershell

我们这里选择了 powershell 7 x64 这个选项,注意这里的powershell7是powershel core,他是一个跨平台的shell ,可以在linux,mac os,windows系统同时使用,这意味着你编写的脚本,可以同时在这三个系统中使用

进入microsoft的powershell官网,我们可以选择多种方式来安装powershell,这里我们选择msi包,这样下载安装都在掌控内,比较方便一些

点击msi,会直接定位到下载链接,共有两个版本,一个是64位,一个是32位,我这里两个都下载了,你那边看情况

powershell x86 和 x64 下载完成

因为我这边已经安装过,具体的安装过程我不在详细指导,但是可以告诉你的是,一路next,然后看到需要点选的框全部选择即可。

之后我们会在桌面右键菜单中发现这两个选项,一个32位,一个64位,用起来比较方便,我个人现在都是使用powershell 7 core,自己安装的这个,而不是windows系统自带的,因为windows系统自带的有些时候可能会遇到编码问题

接下来我们打开powershell,看下面的图,可以看到在这条命令中我使用了echo命令,echo命令是属于cmd的一个指令,在powershell中同样可以使用,这是powershell的别名功能,很多cmd命令在powershell中都有别名,这样方便哪些留恋批处理的人转移到powershell之中

通过查询echo的别名我们可以发现,echo的别名实际在powershell中是 write-output 的命令,也就是说,在powershell中我们可以使用echo 和 write-output 同样完成输出语句的功能,它们的功能完全一样,只是名字不同

好,上面那些都是开胃菜,接下来让我们正式开始powershell,打开windows输入框,我们输入powershell,然后点击 Run As Administrator 以管理员方式打开,这样你才可以拥有管理的功能

具有管理员功能的标志是在右上角有 Administrator 的字样,这是我们尤其要注意到的一点。这个管理员功能非常重要,如果没有上面没有管理员标志,那么我们在执行操作时可能会面临操作无效的情况,而且通常它是没有任何提示的。所以当出现任何问题时,检查一下看看你的powershell是否处于管理员模式

我们要对powershell的字体进行一个调整,这样做的目的在于设置一个更加舒适的控制台窗口,我们可以设置它的背景颜色以及字体颜色,在这里我将powershell的字体调整为新宋体,并且设置了粗体

在颜色这里,我将powershell的屏幕文字调整为绿色,屏幕背景设置为默认的黑色。这样对眼睛比较舒适一些,你可以按照自己喜欢的颜色进行调整。

设置完成后,我们重新打开powershell就会发现powershell已经生效了,这是字体为新宋体 粗体 ,屏幕字体为绿色时的状态

在前面我们讲了在powershell可以直接使用cmd、dos命令,或者linux命令,这是由于get-alias gal 别名功能的存在,那么我们如何查找对应的别名呢,下面这张图片可以给你答案,在这里我们使用了get-alias命令的缩写 gal 并且只使用findstr显示包含指定字符串的行

powershell的command命令,被称为cmdlet,它通常是以动词get set - 名词的方式组合而成,据powershell的创建者所言,一开始他们有照搬linux的想法,linux的命令一切都是围绕着文件而来的。但是由于windows有所不同,windows有注册表 wmi等等,因此完全使用linux命令是不可取的

在powershell中我们还可以获取对象的类型,在powershell中,一切都是对象,那么既然是对象,就必然有其类型和方法,常量等等,供我们查阅,调用,研究使用。powershell查看对象的方法的方式是 object.getType 如下图所示,一个Object数组类型和一个String类型

同样还有对应的方法和成员属性,这个我们可以通过get-member来获取

图中获取了Object对象的属性方法,分别为基准的ToString GetType GetHashCOde 以及 Equals 方法 ,经常使用Java的会感觉很熟悉,这是因为powershell是基于.net的,.net又以csharp为主,charp又是仿的Java,所以如果之前学过java会感觉很容易上手powershell

下面看个比较有意思的,在powershell中我们可以直接使用charp的类型创建一个对象,比如在下面这个示例中,我们创建了一个HashSet对象,并将值设置为at双括号

但是我们需要注意到的是,将值设置为at双括号的形式可能会引发一定的问题,所以虽然这种方式可行,不过并不推荐,合理的初始化的行为应该是赋值为双大括号,这样我们就能够获取它的成员方法和属性了

但是一双大括号的方式创建的c# HashSet同样存在一个问题,就是会有一个空内容出现,也就是说初始状态下就有一个空内容填充到HashSet的对象中,因此考虑到这一点还是使用ait双括号的方式创建HashSet对象比较妥当

前面我们讲到powershell的cmdlet由 动词 + “-” + 名词的格式构成,下面这张图涵盖了powershell所有的动词 英文单词操作,相信会对大家有很大的帮助。就我接触powershell这么长一段时间而言,我感觉写powershell就像写c#一样,不同的是powershell又将c#进行了一层封装,更加方便调用

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多