[原创][PowerShell教程][02]PowerShell基础知识之一

【速成】PowerShell快速学习教程 2006年,微软推出PowerShell,功能远超CMD,成为微软推荐的“现代CLI”。powershell是面向对象的命令行Shell和脚本语言环境。传统 Shell 命令输出的是文本,比如CMD。PowerShellCmdlet输出的是.NET 对象。特性CMDPowerShell输出类型纯文本对象流可扩展性固定命令集支持自定义 Cmdlet脚本能力批处理文件面向对象的脚本语言错误处理简单退出码详细错误对象。 阅读详情
本Blog所发表的所有"原创文章", 未经许可, 禁止以任何形式进行转载.
 
作者: Edengundam(马涛)
 
如果要学一门语言, 你就必须对语言的语法, 特性有所了解. 只要对语言的各个环境了解, 才能更好编写, 调式, 部署你的程序. 因此, 教程第二部分将会着重于如下几个方面:
 
1. PowerShell, Shell, 脚本语言等概念;
2. 参数绑定;
3. 类型转换.
 
这些基础知识, 希望大家不要轻视, 因为后面的教程将会直接引用这些概念.
 
首先, 我们先来调查PowerShell中最重要的元素: 命令(Command). 在PowerShell中, 命令分为四类: cmdlet, function, script和native Windows commands. 可能看到这四个英文名称会有些头大, 我们来仔细了解一下.
 
1. cmdlet
在PowerShell官方blog上, 有篇关于Cmdlets和API的介绍. 因为PowerShell建立在.Net上, 再加上COM, WMI, ADO, XML等技术. 使得PowerShell对于.Net应用开发人员, 服务器管理人员来说都会非常方便, 通过这些已有的接口, 即可完成大量的任务. 但是, PowerShell的设计者明确的指出Cmdlets是PowerShell的灵魂.
Cmdlet是Command-Let的缩写. cmdlet这类命令有一种统一的命名方法: Verb-Noun, 也就是 动词-名词. 如果你是一名.Net程序员, 那么编程规范中应该也会提出, 对于方法(method)的命名, 最好使用动词-名词形式配合骆驼(Camel)命名法.
查看有哪些cmdlet参考如下:
 

PS C:/> get-command -CommandType cmdlet

CommandType Name Definition

----------- ---- ----------

Cmdlet Add-Content Add-Content [-Path] <String[]> [-Value] <Object[...

Cmdlet Add-History Add-History [[-InputObject] <PSObject[]>] [-Pass...

Cmdlet Add-Member Add-Member [-MemberType] <PSMemberTypes> [-Name]...

Cmdlet Add-PSSnapin Add-PSSnapin [-Name] <String[]> [-PassThru] [-Ve...

Cmdlet Clear-Content Clear-Content [-Path] <String[]> [-Filter <Strin...

Cmdlet Clear-Item Clear-Item [-Path] <String[]> [-Force] [-Filter ...

Cmdlet Clear-ItemProperty Clear-ItemProperty [-Path] <String[]> [-Name] <S...

这里我省略了绝大部分的显示(^^), PowerShell Version 1.0 微软官方发布的版本包含了

PS C:/> (get-command -CommandType cmdlet).count

129

129确实有点多, 但是实际上在学习过程中你会发现学习他们的过程比你学习unix shell中命令更加容易些, 原因稍后为你解答.

cmdlet是可以进行扩展的, 如果你想开发自己的cmdlet, 你需要下载PowerShell SDK. 目前, 我只知道该 SDK 包含在了Windows Vista Platform SDK中. 下载该 SDK, 需要进行正版验证. 在伴随着教程的编写过程, 我也会阅读PowerShell SDK中关于PowerShell的介绍, 并尽量用最简单的语言将需要注意的内容, 传达给大家.

cmdlet的开发并不复杂, 可以使用C#作为实现语言, PowerShell SDK已经实现了好了cmdlet的一个基类, 开发的cmdlet只需要继承该基类. 通过这种开发模式, 最大的优点:

  (1). 所有的cmdlet中包含了一些公共参数(common parameters), 例如: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 这些参数大多用于一些脚本调试等.

  (2). 所有的cmdlet中的参数(parameters)具有相似的参数, 相同的类型, 甚至具有相同的性质. 对于接受输入的某些cmdlet来说, 输入的参数就叫做-InputObject, 参数类型一般是[object[]], 而通常都会具有从管道线读取处理对象的属性.

这种一致性带来的最大好处就是, 对于一个命令, 往往你只需要关注命令的特性, 不需要记住复杂繁多的参数. 如果你熟悉unix shell下的utils core tools那么我相信, 例如awk使用-F指定一个支持正则表达式的与分隔符, cut使用-d来分割, sort使用-t进行分割对你来说是痛苦的. 在PowerShell中, 你甚至不需要对cmdlet产生的输出进行分割. 这点你会在稍后看到.

cmdlet编译后的结果不是可执行文件, 而是dll文件, PowerShell启动时, 将这些命令加载, 这些命令执行效率最高, 因为他们在PowerShell时被载入PowerShell进程内.

2. 函数(function)

函数, 准确的说就是: 有名称的代码块(scriptblock). 下面就是一个简单的函数定义:

PS C:/> function Get-DayToBeiJingOlympic

>> {

>> ([datetime] "2008-08-08" - [datetime]::Now).Days;

>> }

>>

PS C:/> Get-DayToBeiJingOlympic

370

细节大家可以不用关心, 稍后都会讲到. 函数就是一段你输入到PowerShell的命令集合.

但是函数在被定义后, 才存在于PowerShell内存中, 当PowerShell退出时, 就会消失.

效率上, 函数在第一次调用时需要编译, 因此第一次调用速度较慢.

3. 脚本(script)

PowerShell在交互式Shell(interactive Shell)和脚本语言(script Language)之间进行了平衡, 提供了执行脚本的能力. 脚本类似于函数, 存放在文件中, 调用时由PowerShell载入内存, 编译并执行.

效率上来讲, 脚本慢于函数(function), 主要原因在于函数只会在第一次调用时被编译, 而脚本每次调用都会被编译一次. 但是编译后的执行阶段, 他们的性能是近似相等的.

4. native Windows command

我不知道应该这个东西用什么名字. 这类命令在Windows世界大量存在, 譬如: dir, findstr, del, ping. 这些命令就是Windows之前的可执行文件(非.Net命令行可执行文件). 在PowerShell中调用这些命令效率是最低的, 因为执行他们PowerShell需要创建一个新进程. 此外因为这些命令早于PowerShell, 因此他们的信息输出都是基于文本的(也可以说是字符串), 因此丧失了PowerShell对对象的处理能力. 因此, 如果你知道PowerShell的实现, 就避免使用这些命令.

讨论完命令, 我简单介绍下别名(alias):

PS C:/> (Get-Command -CommandType alias).count

101

你一定在想, PowerShell为什么提供了这么多别名, 难道要累死我们??

PowerShell为了方便使用windows和unix, linux的人们, 支持了两套别名, 譬如dir相对于ls, 还有unix, linux的grep等. 这样无论你使用windows还是linux都能相对来说快速的上手PowerShell.

PowerShell Version 1.0中有一个缺陷, 既定义别名时, 不允许指定参数. 这无疑是PowerShell的一个缺陷. 但是因为cmdlet中参数较少(一般都是10个以内), 因此大多数时候, 你不需要定义带有参数的别名, 如果真的需要, 可以用函数来替代. 这种缺陷, 与代码块的执行等功能有冲突. 希望在后续版本能有别名功能能够更加强大.

写在最后:

如果您有幸坚持看了我的啰唆, 我非常的感激. 接下来的3, 4讲也会偏向于概念而非更多的语法. 任何事, 请相信你对解释器行为的理解, 对语言的特性的理解, 都会让你在编写该语言代码时受益匪浅. 因此, 请坚持, 努力的去学习. 我希望在这份漫长教程过程中, 带给大家更多计算机历史, 发展; 不同语言, 技术的对比; 编写健壮代码(无论是像C, C#还是像sh, PowerShell)的思路. 在03, 04中, 我会介绍两个关键核心的概念(算法??), 参数绑定和类型转换.

学习一门语言, 还能学到编程的心得, 这也是我希望的. 最后, 谢谢关注教程的人, 因为本人工作方向问题, 教程编写速度可能较慢, 还望大家多多见谅.

 
PowerShell 美化 & 增强教程 本教程提供完整的安装、美化和优化步骤,包括常见问题的解决方案。 阅读详情

相关推荐

Windows PowerShell1-基础知识

PowerShell作为Windows系统中的默认脚本,其实在开发中,我们用的很少。接下来的几篇文章都将PowerShell的相关知识,本章知识介绍PowerShell基本的知识。

寒冰屋的专栏 2640

如何在Windows 10上安装PowerShell 7

Microsoft 微软 Microsoft announced PowerShell 7.0 on March 4, 2020. It’s the latest major update to PowerShell, Microsoft’s cross-platform command-line shell and scripting language. Here’s what’s new—an...

culinxia2707的博客 1万+

PowerShell GUI 之基础知识

一直想学习PowerShell怎么弄成带GUI的小tools,会觉得很好玩很神奇。今天又是周末了,终于可以玩点自己喜欢的东西,那么就继续来更新我的blog吧。 要想生成一个GUI,那么得调用一个叫做System.Windows.Forms的命名空间。System.Windows.Forms 命名空间包含用于创建基于 Windows 的应用程序的类,以充分利用 Microsoft Windows

MMMMMMELODY的博客 1万+

PowerShell学习基础篇(使用帮助)

PowerShell不仅仅是一门脚本语言,其实是一种运行命令行工具的命令行Shell。虽然PowerShell可以通过脚本实现很复杂的功能,但脚本仅是使用PowerShell的一种方式。PowerShell为Windows管理员提供自动化管理的工具,微软的多个产品组都采用了PowerShell,第三方生态系统扩展也是基于PowerShell,并且全球的社区专家与爱好者也都帮助PowerShell变得越来越好。

weixin_49668551的博客 1万+

全面掌握PowerShell的中英文双语教程

ISE界面由几个关键部分组成:脚本编辑区、控制台、输出面板和属性面板。脚本编辑区:这是编写PowerShell脚本的主要区域。用户可以打开、编辑和保存脚本文件。控制台:位于ISE的底部,用于执行命令和显示脚本的输出结果。输出面板:位于ISE右侧,提供对错误、警告和输出的直接访问。属性面板:提供当前选中对象的详细信息,比如命令、变量和函数。ISE允许用户安装额外的命令扩展,这可以通过PowerShell模块实现。

weixin_42497762的博客 824

精通PowerShell的官方中文教程

PowerShell是微软公司推出的一款强大的命令行Shell和脚本语言,它基于.NET框架,用于系统管理任务自动化。与传统的命令行工具相比,PowerShell提供了更丰富的对象处理能力和更灵活的脚本编写环境。自定义ISE界面设置可以让用户根据个人习惯进行配置,提高工作效率。例如,通过设置“选项”菜单中的“常规”和“文本编辑器”选项,可以调整字体大小、颜色主题、自动完成设置等。# 例子:设置ISE的主题为暗色主题。

weixin_28988985的博客 1617

windows强大的工具powershell(基础篇)

了解powershell

Lord_Torres的博客 5193

task5:在本地搭建大模型(ollama 和 LM studio 对比),接入 openclaw

关于大模型,大家千万不要想着在本地部署,根本不可行,没有那个财力。另外大模型迭代快,不可能每周都在下载大模型。再次,还是国外的模型好用,国内的模型真的在 deepresearch 上就有很大问题,你们懂的。所以本篇文章,还是聚焦在探索层面+实操,并不会实战。

这里是 AI 食用指南,持续分享有用的AI 实操和应用! 1968

PowerShell的脚本和命令讲解

还要注意,-LogName参数的语法列为[-LogName],这里缺少小方括号,意味着对于-LogName参数只能有一个值。圆括号命令的作用就是首先执行括号中的的操作,结果将作为传递给参数的值。包括字符串在内的整个参数都是可选的,因为整个参数都是用方括号括起来的。内部有一个小方括号,看到以这种方式显示的两个方括号时,这意味着可使用逗号分隔的列表传递多个值。if语句查看变量$file路径是否有现在的路径文件,如果没有,它就在变量$file的路径下创建一个新的文件。

weixin_49668551的博客 1万+

VH6501干扰仪的使用

触发模式方法备注External Trigger(外部触发)使用VH6501的I/O口作为触发源Frame Trigger(报文触发)设定被干扰报文的触发位置,并发送干扰位序列/报文software Trigger(软件触发)配置好干扰序列后直接发送Error Frame Trigger(错误帧触发)基于错误帧标识位为触发条件触发干扰Direction Trigger(发送方向触发)根据TX/RX发送/接收方作为触发条件Inverted Trigger(反向触发)

帮助100万人颠覆负面潜意识,实现人生蜕变,培养1万名潜意识开发导师 9054

单细胞转录组数据分析全流程:从原始数据到细胞注释

本文详细介绍了单细胞转录组数据分析的全流程,从原始数据读取、环境搭建、数据质控与标准化,到降维聚类、细胞类型注释,以及高级质控与多样本整合。重点阐述了如何利用Seurat等工具进行数据处理,并通过标志基因比对与自动注释方法完成细胞身份鉴定,为研究者提供了一套清晰、可操作的分析指南。

coffee的博客 553

Powershell学习笔记

学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!PowerShell 作为一个强大的命令行和脚本语言,具有面向对象的思想(Object-Oriented Programming,简称 OOP),这种特性使得它不仅仅是一个简单的命令行工具,而是一个功能强大的自动化平台,能够处理复杂的数据结构和任务。

sucker的博客 3095

从零到一:树莓派上的YOLO目标检测实战指南

本文详细介绍了如何在树莓派上部署和优化YOLO目标检测模型,从硬件选型到系统配置,再到模型转换与推理优化。通过对比不同树莓派型号的性能差异,提供实用的配置方案和代码示例,帮助开发者快速实现高效的边缘计算视觉系统。特别推荐使用ONNX格式进行模型转换,以提升在树莓派上的推理效率。

weixin_29046035的博客 1063

[原创][PowerShell教程][01]初识PowerShell

本Blog所发表的所有"原创文章", 未经许可, 禁止以任何形式进行转载.  作者: Edengundam(马涛) PowerShell的概念性介绍我不太想说得太多, 简单概括几点:   1. 微软Windows操作系统最初的设计目标是面向非技术用户, 甚至是对计算机不感兴趣的人群, 因此, 真正自动化, 强大的Shell一直不是微软公司所关心的问题. 随着Wi

Windows PowerShell 1万+

三电平逆变器LC滤波设计避坑指南:从SVPWM谐波到Simulink仿真验证

本文详细解析了三电平逆变器LC滤波设计中的关键问题,从SVPWM谐波特性到Simulink仿真验证,提供了800V/10kW系统的参数计算方法和优化技巧。通过实际案例和仿真配置示例,帮助工程师避免常见设计误区,提升电能质量和系统稳定性。

weixin_29261711的博客 173

T12 电烙铁简单程序逻辑

通过分析就可以知道,发热丝本身即是发热体,也是热偶的工作端。怎么可能是热电动势呢,确实,但不要忘了T12-OUTPUT端的电压是PWM波,理论上是有单片机PWM电压为0 v时的,而T12-OUTPUT端的电压此时也应为0。在T12烙铁头中,PID控制算法通过监测温度传感器的输出,计算当前温度与设定温度之间的差异,并根据这一差异调节加热功率,以实现烙铁头温度的精确控制。这段代码实现了一个简单的增量式PID控制器,通过计算当前温度与期望温度之间的差异以及历史偏差值,调节输出控制量,实现对温度的精确控制。

hgkhjkljnl的博客 1万+

[原创][PowerShell教程][03]PowerShell数据类型之整型

本Blog所发表的所有"原创文章", 未经许可, 禁止以任何形式进行转载. 作者: Edengundam(马涛) [原创][PowerShell教程][03]PowerShell数据类型之整型因为一些原因, 之前的教程之写了两篇, 教程将会从现在继续开始, 并且不会再发生间断, 尽量做到每周能够发两篇. 在02中已经为大家介绍了一些基本概念, 所以从03开始, 将真正接触使用P

Windows PowerShell 4276

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

PowerShell 教程

本文是一份面向初学者的PowerShell教程指南,涵盖Windows PowerShell 5.1和PowerShell 7.x的基础知识。主要内容包括:PowerShell简介、基本命令(如Get-Command、Get-Help等)、核心概念(管道和对象操作)、实用命令集合、变量与数据类型、条件与循环语句、函数编写、脚本基础以及模块管理。教程还提供了每日练习建议和推荐学习资源,帮助用户从零开始逐步掌握PowerShell的系统管理能力,适用于文件操作、系统监控等自动化任务场景。

likuoelie的博客 1632

如何用 ABAP 以程序方式把指定表项写入 Transport Request

本文探讨了在SAP系统中运输自定义配置表数据时如何确保主表和相关文本表数据同步运输的问题。文章分析了两种实现方案:一是直接操作CTS表结构(E071和E071K)手动添加运输条目,二是使用SOBJ对象类型自动推导依赖关系。重点阐述了第一种方法的实现细节,包括如何正确拼接表键值到TABKEY字段,并提供了示例代码说明如何将ZXA_HEADER主表和ZXA_HEADERT文本表数据同时加入运输请求。文章特别指出在全球化交付场景中,文本表缺失会导致界面显示异常,强调理解底层运输机制对解决此类问题的重要性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 221

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[原创][PowerShell教程][04]PowerShell面向对象基础之一

本Blog所发表的所有"原创文章", 未经许可, 禁止以任何形式进行转载. 作者: Edengundam(马涛) 面向对象编程的引入主要是为了解决软件复杂化带来的维护等问题,早在20世纪60年代,面向对象就已经出现了。虽然C语言并不支持面向对象的特性,但是使用C语言进行开发的程序人员已经将面向对象的核心思想应用到其中,因此我们更应该理解的是面向对象的思想,而不需要纠缠于语言本身。P

Windows PowerShell 2723

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

安装和卸载PowerShell 7最新版详细教程

本文详细介绍了PowerShell 7的安装与卸载方法。主要内容包括:通过winget命令搜索、安装稳定版(7.5.4.0)或预览版(7.6.0.5);使用pwsh --version等命令验证安装;使用winget uninstall卸载稳定版或预览版;确认卸载是否成功。教程强调稳定版更适合生产环境,并说明PowerShell 7可与Windows PowerShell 5.1共存。最后建议定期更新以获得最新功能和安全修复。

TechExplorer365的博客 7181

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PowerShell使用教程

一、说明 1.1 背景说明 个人对PowerShell也不是很熟悉,开始的时候就突然看到开始菜单中多了个叫PowerShell的文件夹,后来一点就看到某个教程视频说PowerShell很厉害但也没怎么听,再后来就看到kali也有了一些PowerShell的脚本这才意识到PowerShell应该确实有独到之处而且正在逐渐受到认可,不过我使用PowerShell是不久前网上看到篇文章说PowerShe...

weixin_34092455的博客 4964

 PowerShell基础知识

PowerShell基础知识 1、powershell概念 powershell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。 powershell可以大量简化人工操作,例如:安装某些应用前需要检查环境变量,安装完成后需要设置环境变量,检查和优化你的 注册表,这样的人工操作可以全部交给powershell来完成,并且powers...

Littleliuing的博客 786

PowerShell Editor Services 使用教程

PowerShell Editor Services 是一个 PowerShell 模块,旨在为几乎任何编辑器或集成开发环境(IDE)提供一致且强大的 PowerShell 开发体验。它支持语言服务器协议(Language Server Protocol)客户端,并提供了以下功能: - 语法高亮 - 代码补全 - 代码导航 - 调试支持 该项目的主要目标是使 PowerShell 开发更加便捷

gitblog_00776的博客 782

[原创][PowerShell教程][06]PowerShell中格式化命令和输出命令

好久不见, 我又食言了, 一直没有更新教程, 我也不想找借口, 因为我花了很多时间跑去玩大蛇无双和魔王再临. 今天, 我将为您介绍如何使用格式化和输出命令. 在PowerShell中,负责进行格式化和输出的是三类cmdlet。他们分别是:Format-*、Out-*和 Write-* 。顾名思义,Format-* 主要是用来对信息进行格式化操作,Out-*用于指定输出设备,而 Write-

Windows PowerShell 4889
上一篇: [原创][PowerShell教程][01]初识PowerShell
下一篇: 本blog目标
PowerShell
博客等级 码龄19年 103粉丝 110原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值