跳到主要内容

Powershell 应该如何入门使用

命令行语法说明

前提

分为三个步骤,只需要不断重复组合即可

  1. 理解设计规则
  2. 使用帮助手册 get-help
  3. 结合管道命令组合使用 |
  4. 查看方法属性 get-member get-command
  5. 调用类方法 ([command]).<method>

设计规则

  1. 查看属性
  2. 筛选属性
  3. 格式化输出

常用类型分为:Alias、Cmdlet、Function、Application、Script…..(共9个,详见下方超链)

CommandType枚举值

Alias1Aliases create a name that refers to other command types
All511All possible command types.
Application32Any existing application (can be console or GUI).
Cmdlet8A cmdlet.
Configuration256A Configuration
ExternalScript16An MSH script (.ps1 file)
Filter4Script filters that are defined by a script block.
Function2Script functions that are defined by a script block
Script64A script that is built into the runspace configuration
get-command <command>

# 例子

❯❯ pwsh-demo 01:01 Get-Command vim

# 输出

CommandType Name Version Source
----------- ---- ------- ------
Application vim.exe 0.0.0.0 D:\.data\Scoop\shims\vim.exe

cmdletpowershell 的实例,返回的是一个对象

  1. Method 方法
  2. Property 基本属性
  3. AliasProperty 别名属性
  4. CodeProperty 代码属性
  5. NoteProperty 注释属性
  6. ScriptProperty 脚步属性
  7. Property sets 属性集
❯❯ pwsh-demo  00:42 get-date | Get-Member

### output

TypeName: System.DateTime

Name MemberType Definition
---- ---------- ----------
Add Method datetime Add(timespan value)
AddDays Method datetime AddDays(double value)
AddHours Method datetime AddHours(double value)
AddMilliseconds Method datetime AddMilliseconds(double value)
...
DisplayHint NoteProperty DisplayHintType DisplayHint=DateTime
Date Property datetime Date {get;}
...
DateTime ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Version 1; $this.DisplayHint }) -ieq "Date")
❯❯ pwsh-demo  00:40 get-date

### output

2022年10月7日 0:42:29
❯❯ pwsh-demo  00:40 get-date | Format-list

DisplayHint : DateTime
Date : 2022/10/7 0:00:00
Day : 7
DayOfWeek : Friday
DayOfYear : 280
Hour : 0
Kind : Local
Millisecond : 814
Minute : 40
Month : 10
Second : 54
Ticks : 638007000548142568
TimeOfDay : 00:40:54.8142568
Year : 2022
DateTime : 2022年10月7日 0:40:54

参考

  1. Learn PowerShell Video + Blog Series - Tech Thoughts