
PowerShell从入门到精通
文章平均质量分 53
和我一起来跟着我的视频一起学习PowerShell的各类知识。为越来越近的自动化运维做准备。大家可以一直追踪专栏的更新!
优惠券已抵扣
余额抵扣
还需支付
¥59.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
雾岛心情
微软最有价值专家、微软公共论坛版主、最有价值售前专家、Teched 讲师 先后为华硕、台积电、纬创、冠捷、友达、TPK 等等企业提供顾问咨询服务及培训服务,先后就职于Acer企业服务部、微软中国有限公司。现为企业提供BI+AI数据转型及咨询服务!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PowerShell专栏】PowerShell的哈希表类型(字典类型)
PowerShell中的哈希表(字典)使用键值对存储数据,格式为@{key="value";...},元素间用分号分隔。创建时需以@开头并用{}包裹,空表用$var=@{}。哈希表分有序和无序两种:无序表不保留插入顺序;有序表需添加[ordered]修饰符(如$hash=[ordered]@{}),会记录字段插入顺序。注意无序表无法转换为有序表,强行转换会报错。通过gettype()可查看对象类型。原创 2025-08-21 01:00:00 · 3 阅读 · 0 评论 -
【PowerShell专栏】PowerShell数组元素筛选
本文介绍了PowerShell中数组元素的筛选方法。通过Where子语句可过滤数值型数据(如筛选大于3的元素:$a|where{$_-gt3})。对于字符串类型数据(如IP地址),推荐使用Match关键字配合正则表达式进行筛选。文中给出了IP地址的正则表达式模式,并通过示例数组$ip演示了如何筛选出符合格式的IP地址($ip-match$ipregex)。这两种方法分别适用于数值比较和模式匹配的不同筛选需求。原创 2025-08-19 00:45:00 · 11 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的数组类型数据嵌套
PowerShell支持数组嵌套功能,允许在数组中包含不同类型的数据,包括其他数组。例如,数组$a可以包含字符串、数字、布尔值以及另一个数组(1,2,3,4,5)。通过索引访问最后一个元素时,会发现它是一个数组类型,可以继续使用索引访问其内部元素,如$a[3][1]获取嵌套数组中的第二个元素。原创 2025-08-17 01:00:00 · 14 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的数据轮询方式
PowerShell中遍历数组主要有For和Foreach两种方法。For循环通过索引访问数组元素(如For($i=0;$i-le$a.count;$i++){Write-host$a[$i]}),但操作较复杂。而Foreach循环(Foreach($i in $a){Write-host $i})更为简洁高效,可直接遍历数组元素。两种方式都能实现数组遍历,但Foreach在代码简洁性和可读性上更胜一筹。原创 2025-08-14 00:45:00 · 19 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的数据切片功能
PowerShell中的数据切片功能允许用户通过索引范围提取数组中的连续元素。使用"[0..4]"格式可获取数组第1到第5个元素,支持正负数索引以及混合使用。例如:$a=1,2,3,4,5时,$a[0..2]输出1,2,3;$a[4..0]实现倒序输出;$a[-1..-5]同样可倒序输出。混合切片如$a[-3..2]会依次输出$a[-3],$a[-2],$a[-1],$a[0],$a[1],$a[2]对应的元素3,4,5,1,2,3。理解切片操原创 2025-08-12 01:45:00 · 18 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的数组对象的定位
PowerShell数组索引具有独特特性:支持正负双向索引且无边界限制。数组元素通过"[]"访问,正索引从0开始,即使超出范围也不会报错而是返回空值。负索引表示从末尾反向定位,如$a[-1]获取最后一个元素。与其他语言不同,PowerShell允许任意数值的索引(如$a[-1000])且不会引发越界错误,这一特性与Python等解释型语言类似。数组可包含混合数据类型,通过简单语法即可实现灵活的元素访问。原创 2025-08-10 01:15:00 · 18 阅读 · 0 评论 -
【PowerShell专栏】在PowerShell对象中添加成员
PowerShell中的数组长度是固定的,无法直接使用add方法添加元素。但可以通过"+"运算符创建新数组,将原数组元素与新元素合并后重新赋值给变量。例如$a=1,2,3,4,5,通过$a=$a+6可将数组扩展为1,2,3,4,5,6,实际上是创建了新的数组对象而非修改原数组。这种方法实现了类似动态扩展的效果。原创 2025-08-08 03:15:00 · 19 阅读 · 0 评论 -
【PowerShell专栏】PowerShell数组的强类型定义
PowerShell数组支持混合数据类型,但也可以通过强类型定义限制为单一类型。实现方式有两种:一是定义空数组时指定类型(如[int[]]),二是对现有数组强制类型转换。后者要求数组元素可转换为目标类型,否则会报错。强类型定义有助于确保数据类型一致性,避免类型混用问题。原创 2025-08-06 03:00:00 · 28 阅读 · 0 评论 -
【PowerShell专栏】PowerShell中的数组类型对象
PowerShell中定义数组主要有两种方法:一是用逗号分隔元素(如$a=1,2,3,4,5),二是使用@()语法(如$a=@(1,2,3,4,5))。两种方式创建的变量通过GetType()检测均为Array类型。特别注意,创建空数组时必须使用@()格式,省略"@"会导致异常。这两种方法分别适用于定义非空数组(含初始元素)和空数组的场景。原创 2025-08-04 02:30:00 · 30 阅读 · 0 评论 -
【PowerShell专栏】PowerShell中的组合数据类型
本文介绍了组合数据类型的概念及其与单一数据的区别。以描述身高为例,单一数据(如个人身高)简单直接,而描述多人的身高则需要组合数据(如数组)。在PowerShell中,组合数据主要有两种形式:数组(如@(1,2,3))和哈希表(如@{name="张三"})。相比单一数据类型,组合数据类型能包含多个元素(类型可相同或不同),并提供更多方法和属性。文章将重点探讨PowerShell中的数组和哈希表这两种常用组合数据类型。原创 2025-08-02 01:15:00 · 27 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的数据类型转换
本文探讨了PowerShell中的数据类型转换机制,包括自动转换和手动转换两种方式。自动转换虽然便捷,但在特殊场景下可能出现意外结果,如int得到2而非1,这是由于浮点数四舍五入取整所致。文章详细介绍了三种手动转换方法,并指出[boolean]和[char]类型转换的特殊性,特别是char类型仅支持0-65535范围内的整型转换。通过具体案例揭示了数据类型转换中可能存在的陷阱,提醒用户在操作时需特别注意不同数据类型间的转换规则。原创 2025-07-31 03:30:00 · 34 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的特殊类型Switch类型
PowerShell中的Switch类型是一种特殊的参数类型,类似于布尔值但功能不同。它主要用于函数参数定义,作为"开关"使用 - 当参数被调用时相当于"开启",未调用则为"关闭"。通过检查$bool.IsPresent属性可以判断开关状态。虽然Switch不属于基础数据类型,但在脚本编写中能有效控制函数参数的调用逻辑。其使用方式类似于电灯开关,提供了一种简洁的参数控制机制。(149字)原创 2025-07-29 04:00:00 · 36 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的.Net对象
PowerShell支持通过.NET静态类型扩展功能,常用的.NET类型包括IO.FileStream、Net.DNS、TimeZoneInfo等。创建.NET类型需采用静态定义方式,主要方法有.NET强类型定义和指定现有对象两种。例如,使用System.IO.FileStream创建文件对象,或通过[System.Net.DNS]解析网络地址。这些.NET类型可直接调用其属性和方法,扩展了PowerShell的原生功能。原创 2025-07-27 02:00:00 · 58 阅读 · 0 评论 -
【PowerShell专栏】PowerShell基本数据类型中的布尔类型
摘要:PowerShell中布尔类型可通过$true/$false直接赋值或强制类型转换实现。前者简单直接,后者需显式转换。强类型布尔变量仅接受$True/$False,其他赋值会报错。两种方式为流程处理提供了灵活的布尔值定义方法,但强制类型转换后变量将严格限定为布尔值。原创 2025-07-23 03:00:00 · 32 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的字符串类型
字符类型是最常用的数据类型,未定义的数字默认被视为字符。在PowerShell中,所有数据都可转换为字符串,定义方式为$a="PowerShell"或[string]$a="PowerShell"。当赋值非字符串类型时,系统会尝试自动转换,失败则抛出异常。字符串类型具有丰富的操作方法,将在后续章节详细介绍。原创 2025-07-14 00:45:00 · 29 阅读 · 0 评论 -
【PowerShell专栏】PowerShell支持的Math运算
本文介绍了PowerShell中常用的数学函数及其应用,包括Pi值运算(计算圆面积)、幂运算(Pow函数)、四舍五入(Round函数)、平方根运算(Sqrt函数)、三角函数(Sin, Cos, Tan)以及对数计算(log10)。每种函数都提供了示例代码和计算结果,适用于特定数学场景。虽然这些Math类函数在实际应用中较少使用,但在需要精确数学计算时非常有用。原创 2025-07-09 01:15:00 · 34 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的字符类型Char
字符型和字符串型虽一字之差,但数据类型差异显著。在PowerShell中,字符型需通过强类型定义(如[char]),否则会被视为字符串。字符型仅支持单个字符,长度超限或ASCII码转换失败时都会报错。定义后字符数据不能超过两个字节(65536)。两种类型支持的方法不同,使用时需特别注意类型转换的边界条件。原创 2025-07-07 01:15:00 · 39 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的基本数据类型之整型
本文介绍了PowerShell中的整数变量操作。整数作为计数工具被广泛使用,在PowerShell中可以通过$a=100直接赋值,或使用[int]$a=100进行强类型定义。强类型整数变量会将小数自动四舍五入(如3.14变为3,3.87变为4),但字符串转换会导致错误。弱类型定义则更灵活,但强类型可能引发数据截断或转换错误。文中通过实例演示了这些特性,强调需根据需求选择合适的变量定义方式。原创 2025-07-04 01:15:00 · 42 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的命令的右过滤效果
摘要: PowerShell中左过滤(命令参数直接筛选)和右过滤(Where子语句筛选)各有优劣。左过滤效率高但支持命令有限、语法复杂;右过滤灵活性高,支持任意属性筛选但资源消耗大。建议优先使用左过滤减少性能损耗,仅在不支持左过滤时采用右过滤。需注意右过滤不会改变数据类型,筛选后的对象仍保留原属性和方法,可直接传递至后续管道命令(如终止进程)。实际应用中需根据数据量、筛选条件和效率需求权衡选择。原创 2025-07-02 01:15:00 · 216 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的左过滤系列参数
摘要:本文介绍了PowerShell中三个常用过滤参数的功能与用法:Include参数用于保留符合条件的文件,演示了Get-ChildItem命令保留指定类型文件;Exclude参数实现排他性筛选,示例展示了排除png文件的用法;Filter参数主要用于文件筛选,以获取.krc后缀文件为例说明其过滤功能。三个参数在数据筛选处理中各具特点,通过具体命令示例展示了它们的实际应用场景。原创 2025-06-30 04:15:00 · 57 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的管道符的左过滤
管道过滤分为左过滤和右过滤两种方式:左过滤是在管道符左侧直接对命令结果进行筛选,效率较高;右过滤是将数据传至管道右侧后,通过Where子句等条件进行二次筛选。两者可结合使用,先用左过滤初步筛选,再用右过滤细化结果。虽然术语听起来复杂,但实际应用中只需理解数据在管道中的流向和处理阶段即可。原创 2025-06-26 01:15:00 · 137 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的管道符实现批量操作
如果管道符传递的数据能够通过值传递的模式进行数据传递,就必须满足值传递过程中管道符两边的数据类型完成一致的前提要求。这里以Stop-Process命令为例来给大家演示通过值传递的方式传递数据, Stop-Process命令支持的管道符传递的数据类型为Process进程对象类型,图为管道符值传递的数据类型。下面以管道符传递新建文件,文件的名称以CSV文件中的两列组合而成。这里支持通过值进行传递的属性是Process的类型,只要通过管道符传递数据是Process类型,那么就可以能够以值传递的方式进行进程关闭。原创 2025-06-24 03:30:00 · 434 阅读 · 0 评论 -
【PowerShell专栏】PowerShell 管道符实现批量操作
如果管道符传递的数据能够通过值传递的模式进行数据传递,就必须满足值传递过程中管道符两边的数据类型完成一致的前提要求。这里以Stop-Process命令为例来给大家演示通过值传递的方式传递数据, Stop-Process命令支持的管道符传递的数据类型为Process进程对象类型,图为管道符值传递的数据类型。下面以管道符传递新建文件,文件的名称以CSV文件中的两列组合而成。这里支持通过值进行传递的属性是Process的类型,只要通过管道符传递数据是Process类型,那么就可以能够以值传递的方式进行进程关闭。原创 2025-06-22 02:30:00 · 107 阅读 · 0 评论 -
【PowerShell专栏】PowerShell对象的属性名和值传递
最终将三个目标的服务器服务状态全部轮询,这个例子就是非常典型的利用属性名传递的标准使用方法,与值传递的一个比较大的不同地方在于值传递不需要进行属性指定,而如果是属性传递则需要指定传递的属性对应的列。如果在这一步直接将数据传递给Get-Service命令,你会发现执行的结果会出错,原因很简单,虽然这里的ComputerName是BypropertyName的属性,但是这里的Name也是ByProperty属性,同时也是值属性,它会将数据优先以值方式进行传递,最终结果如出现类似的错误报错。原创 2025-06-19 02:15:00 · 36 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的管道符传递方式
PowerShell管道符支持两种数据传递模式:ByValue(值传递)和ByPropertyName(属性名传递)。值传递通过数据类型匹配参数,如字符串匹配Get-Service的Name参数,ServiceProcess对象则匹配InputObject参数。属性名传递需参数名称与对象属性一致。需注意数据类型匹配的重要性,例如字符串形式的服务名称能正确传递,而电脑名称会导致错误。值传递过程中仅允许一个参数接收数据,类型匹配成功后不再支持其他传递方式。理解这两种传递模式的差异对正确使用PowerShell管原创 2025-06-17 01:00:00 · 34 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的管道符功能
摘要:本文探讨了PowerShell中管道符"|"的使用机制,与VBS和DOS环境进行对比,强调其在对象处理上的高效性。通过Get-Service命令案例,说明管道传递需匹配接收参数的数据类型,指出仅ByValue和ByPropertyName两种方式支持参数传递。重点分析了错误传递服务器名而非服务名导致失败的原因,并建议使用Get-Help查看参数传递模式。管道符仅支持单一数据类型传递,需注意InputObject和Name参数的差异特性。原创 2025-06-15 01:15:00 · 42 阅读 · 0 评论 -
【PowerShell专栏】PowerShell自定义对象添加方案
在我们建立了PowerShell 对象之后,添加的属性是描述对象的标签。对于PowerShell对象来说,只有属性肯定不够,还需要给我们的对象提供执行方法。建立的空对象会有一些继承于Object的方法。但在实际应用场景中需要添加一些可以调用的其他方法,这就是PowerShell自定义对象的方法。图为PowerShell对象的默认方法,这些方法都是基类所有的方法。原创 2025-06-12 00:45:00 · 35 阅读 · 0 评论 -
【PowerShell专栏】PowerShell对象的属性添加
完成对象创建之后如果不添加其他属性和方法,这个对象就没有任何用处。我们需要为对象添加相应的属性和方法。对象的属性和方法都可以使用Add-member 就可以实现属性的添加。在进行属性添加的过程中,使用add-member 可以添加多种属性和方法。对于大多数用户来说,Property属性不能添加。只能添加下面四种属性,而目前的使用的较多的属性主要是注释属性和脚本代码属性。原创 2025-06-10 02:15:00 · 37 阅读 · 0 评论 -
【PowerShell专栏】在PowerShell中创建对象
摘要:PowerShell通过New-Object命令创建自定义对象,底层基于.Net框架。创建空对象时仅继承Object基类的四个方法。要创建PowerShell专用对象需使用psobject类型。部分.Net类(如System.Windows.Forms)需先加载程序集才能实例化。自定义对象初始无属性,需后续添加。掌握.Net类机制对PowerShell对象操作至关重要,可通过Get-Member查看对象成员,MSDN文档是重要参考资源。(149字) 关键点: PowerShell对象与.Net类的关系原创 2025-06-05 01:00:00 · 47 阅读 · 0 评论 -
【PowerShell专栏】CodeMethod和ScriptMethod方法
摘要:PowerShell对象支持CodeMethod和ScriptMethod两种方法。CodeMethod方法较少使用,涉及将C#等代码部署到PowerShell中。ScriptMethod方法使用频繁,便于为对象添加脚本方法,但现有对象中较少内置。后续将介绍如何在自定义对象中添加ScriptMethod方法。(98字)原创 2025-06-03 01:15:00 · 46 阅读 · 0 评论 -
【PowerShell专栏】PowerShell对象的Method方法
本文指出PowerShell中的Method方法与Property属性类似,均继承自基类且无法为用户自定义对象创建。通过Process对象的示例说明,任何尝试添加Method方法的操作都会导致系统报错,提示不允许为PowerShell对象添加Method方法。文中附有添加方法时产生的错误提示图示。原创 2025-06-01 01:15:00 · 61 阅读 · 0 评论 -
【PowerShell专栏】PowerShell对象中的方法
摘要:本文介绍了PowerShell对象中的方法特性。方法代表对象的操作行为,如电视的"开关电源"等动作。通过Process对象示例,演示如何用Get-Member获取对象方法,并说明调用方法需使用"对象.方法()"语法(如$notepadProcess.Kill()终止进程)。文章还提到PowerShell支持创建自定义方法,并简要提及方法有三种不同类型,为后续内容做铺垫。原创 2025-05-29 02:30:00 · 127 阅读 · 0 评论 -
【PowerShell专栏】PowerShell对象的属性类型
在PowerShell中,对象的属性类型多样,主要包括Property、AliasProperty、NoteProperty、CodeProperty和ScriptProperty。Property属性通常继承自父类,自定义对象默认不具备此属性。AliasProperty为属性提供别名,可通过add-Member命令添加。NoteProperty是静态属性,用于存储特定值,一旦设定不会改变。CodeProperty基于.NET语言定义,而ScriptProperty则在每次调用时可能产生不同的值,与静态属性原创 2025-05-27 01:15:00 · 567 阅读 · 0 评论 -
【PowerShell专栏】PowerShell对象的属性
在PowerShell中,所有对象都包含描述其特点的属性,如创建人和创建时间。这些属性是对象固有的,用于描述其特性。要了解PowerShell对象的属性,可以使用Get-Member命令,例如Get-Process | Get-Member可以显示进程对象的属性和方法。通过对象后跟“.”和属性名,可以获取特定属性的值。需要注意的是,属性不是方法,不应在属性名后添加括号,否则会导致错误。PowerShell对象的属性多样,具体包括哪些将在后续详细分享。原创 2025-05-26 02:45:00 · 164 阅读 · 0 评论 -
【PowerShell专栏】PowerShell中的对象
本文通过一个女生的例子,介绍了对象的概念及其属性和方法。对象在自然界中无处不在,每个对象都有其独特的属性和行为。例如,女生的属性包括身高、性别、样貌等,而她的行为则包括笑、皱眉头、奔跑等。这些属性和行为共同构成了对象的完整描述。文章进一步将这一概念延伸到PowerShell编程中,解释了如何创建和操作对象。在PowerShell中,对象可以通过多种方式创建,并且每个对象都有其特定的属性和方法。通过Get-member方法,可以查看对象的属性和方法,从而更好地理解和操作对象。原创 2025-05-24 01:45:00 · 133 阅读 · 0 评论 -
【PowerShell专栏】PowerShell的模块移除
在PowerShell中,模块的安装和移除操作分为两种场景:通过Install-Module命令安装的模块和手动安装的模块。通过Install-Module安装的模块可以使用Uninstall-Module命令从系统中完全移除,而手动安装的模块则需要直接删除模块文件。模块的加载和移除是基于当前PowerShell会话(Session)的,使用Import-Module加载模块后,可以通过Remove-Module命令从当前会话中移除模块,但这并不会从系统中删除模块。如果模块未加载,执行Remove-Modu原创 2025-05-22 03:30:00 · 69 阅读 · 0 评论 -
【PowerQuery专栏】List.Generate进行列表生成
可能很多读者朋友第一次看到这个函数会不知所措,但是在实际的数据生成过程中生成很特别的数据还是比较少的。接下来一个案例是利用List.Generate生成字符的案例,这里依据两个参数生成相应的列表数据,图为函数执行结果。函数的结果类型是列表类型,图为函数参数展示。原创 2025-05-21 01:30:00 · 54 阅读 · 0 评论 -
【PowerShell专栏】手动离线安装模块
在某些业务场景中,开发人员可能仅将PowerShell模块发布在GitHub而非PowerShellGallery,导致无法通过Install-Module命令直接安装。以QrcodeGenerator为例,GitHub上发布的2.4.1版本比PowerShellGallery上的2.2版本更新,支持New-QRtext命令的文本参数。离线安装方式较为复杂,需从GitHub下载模块的ZIP文件,解压后将其复制到PowerShell的模块文件夹中。确认模块路径后,可通过Get-Command检查模块命令是否成原创 2025-05-20 01:00:00 · 209 阅读 · 0 评论 -
【PowerShell专栏】构建基于Nuget Server 的企业模块中心
传统的文件夹模式在模块发布和安装时存在诸多不便,尤其是在没有域环境的情况下,每次操作都需要提供凭据,且企业通常不开放139和445等高危端口。为解决这些问题,提出了基于Web服务的Nuget企业内部部署方案。NugetServer是一个开源的.Net库解决方案,支持匿名发布和接收,提供了更完善的包管理功能。部署NugetServer只需在内部IIS网站上设置一个空的NugetServer网站,并确保安装.NET4.5组件。安装VSStudio2022后,创建传统的.Net Web应用程序,并配置API Ke原创 2025-05-18 01:30:00 · 125 阅读 · 0 评论 -
【PowerShell专栏】构建企业内以文件夹为载体的PowerShell模块中心
但如果是自己开发的模块,很可能并没有编写Manifest文件,我们需要按照前面的小节来进行PowerShell模块的Manifest创建,创建完成后就可以进行模块文件的发布了。模块发布之后就被Nuget自动打包成了Nupkg文件,所有客户端只要安装了Nuget都可以使用Install-module命令安装来自PowerShell的Repository的模块文件,只要注册了仓库的客户端都可以通过命令Install-Module直接完成模块的安装,图为通过内部文件夹仓库安装文件。图为安装模块完成后的验证结果。原创 2025-05-15 02:15:00 · 451 阅读 · 0 评论