PowerShell随笔1---背景】的更多相关文章

既然是随笔,那就想到什么说什么,既会分享主题知识,也会分享一些其他技巧和个人学习方法,供交流. 我一般学习一个东西,我都会问几个问题: 这东西是什么? 这东西有什么用,为什么会出现,出现是为了解决什么问题的? 我如何从0到hello world整一个demo出来? 开始 每个人学习的方式不一样,有的人喜欢看视频,有的喜欢看博客,有的则喜欢配着故事.我会直接去看官方文档,没有比这再精确的东西了. 当然最好能看英文文档,一当面提高英语水平,另一方面有些词汇实在没法找到合适的中文. PowerShel…
PowerShell特殊变量: PowerShell的特殊变量由系统自动创建.用户自定义的变量名称应该不和特殊变量相同. $^ :前一命令行的第一个标记 $$ :前一命令行的最后一个标记 $_ :表示表示当前循环的迭代变量. $? :前一命令执行状态,成功(Ture) 或者 失败(False) $Args :为脚本或者函数指定的参数 $Error :错误发生时,错误对象存储于变量 $Error 中 $Foreach :引用foreach循环中的枚举器 $Home :用户的主目录 $Host :引…
我们总不能把所有脚本文件零散的放着,就像创建一个项目一样,我们创建一个Module. 创建好之后如何让系统认识我们创建的Module呢,我们需要放在指定的位置. 那到底应该放在什么位置呢? 我们可以通过$PSHOME变量查看系统从哪里加载PowerShell Module. 当然,我们也可以修改变量,添加新的路径. 那我们的Module格式应该怎么样的呢?我们写一个最简单的(不规范)看看. 我们的Module名称就是Test,在Test文件夹下必须有个和ModuleName同名的模块清单文件(*…
为了脚本逻辑的重复使用,我们更多时候会封装成方法.PowerShell的function和C#.JavaScript的定义有些区别. 我们直接看例子: 可以看到,定义方法并不是这样的: function GetServiceStatus(string name) { } 而是这样的: function GetServiceStatus { param(p1,p2) } 可以看到最明显的区别就是参数的部分,它是由一个param关键字指定,所有的参数在其中指定. 每个参数可以增加约束,比如是否强制.…
PowerShell默认的顺序执行命令,即使中间某一句命令出错,也会继续向下执行. 但是,我们的业务有时并非如此,我们希望出现异常情况后进行捕获异常,进行记录日志等操作. 和其他编程语言一样,我们可以使用try catch代码块. ??? 这好像没区别啊,是的.默认的每个命令都会有一些通用参数. 有个参数是:ErrorAction,就是指定命令在出现错误后的行为,我们可以看到参数值可以使继续.忽略.停止等. 该参数默认值是Continue,也就是发生错误后继续. 我们把参数值修改为Stop,就可…
简单的命令可以通过控制台窗口输入执行,但是我的脚本逻辑复杂,需要保存.总不能在命令行工具中执行吧. 关了窗口,啥都没了.有没有一个IDE,有. 在PowerShell命令行窗口中输入:ISE,就会打开PowerShell ISE. 你可以在下面控制台中直接执行命令,这里的控制台复制粘贴是常规的Ctrl+C.V,而不像控制台窗口中非标准的,使用起来还是很友好的.但有时和交互的窗口弹出存在问题,遇到了可以移步到命令行窗口. ISE上半部分编辑器中,你依旧可以使用快捷键补全,可以调试.运行.运行选中脚…
有些情况下,有些脚本命令不能满足我们的需求,而手头却能用C#很方便的实现. 我们就可以把自定义的类型Add到PowerShell中使用,使用方法和PowerShell调用.NET类库方法是一样的. 以下是个例子: 静态方法使用类进行调用,写法为:[类型]::方法名,同理,静态属性也是如此调用. 实例方法需要先实例对象然后调用,实例化使用New-Object命令.…
全局变量 输入$global:后按ctrl+space,我们就可以看到所有的全局变量. 比如我们可以查看PowerShell的版本: 我们可以在在编写脚本代码的时候使用这些变量,globle可以省略,可以这么使用$PSVersionTable.其他变量也是如此. 环境变量 输入$env:后按ctrl+space,我们就可以看到所有的环境变量. 比如有需求找系统的host文件,通常我们可能会写:C:\windows\system32\...\host,通常是没有问题的,但是极个别情况下系统盘不是C…
PowerShell便捷之处 PowerShell中兼容运行cmd的命令,比如 ipconfig.ping命令等 PowerShell的命令更友好,可读性更强.比如停止一个服务 CMD命令:sc stop xxx PowerShell命令:Stop-Service xxx PowerShell的可以使用.NET类库资源,比如:[System.DateTime]::Now就可以输出当前时间 PowerShell返回结果也是对象,并不是一篇字符串. 有哪些命令? powershell有哪些命令可以使…
很多时候我们需要在一个脚本文件执行另外一个脚本文件,比如我们有一个Test.ps1文件 我们有以下2种方法: Invoke-Expression (&) 我们可以看到,Test.ps1中的代码确实执行了,而且两个文件中的变量即使名称相同也是互不影响,因为在各自的作用域内. 点操作符 这个我们可以看到,执行Test.ps1后,会把Test.ps1中的变量加载到当前作用域,因为变量名称相同,所以覆盖了我们定义的变量的值. 这两种方式没有好坏,根据合适的场景使用即可.…