-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Add PowerShell basics blog post
- Loading branch information
1 parent
c974645
commit a8c36e5
Showing
2 changed files
with
243 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,238 @@ | ||
+++ | ||
title = 'Powershell基础' | ||
tags = ['Powershell'] | ||
date = 2024-07-05T00:34:17+08:00 | ||
draft = false | ||
+++ | ||
|
||
PowerShell 是一种跨平台的任务自动化和配置管理框架,它是 Windows 的一部分,可以在 Windows、Linux 和 macOS 上运行。虽然功能上没有 Bash 那么强大,但是 PowerShell 有着更好的可移植性和跨平台性。PowerShell 由命令行解释器和脚本语言组成,它结合了传统的命令行工具、脚本语言和编程语言的优点,提供了强大的自动化功能。 | ||
|
||
## 基本概念 | ||
|
||
### Cmdlet | ||
|
||
Cmdlet 是 PowerShell 的基本命令,它是一个 .NET 类,用于执行特定的任务。Cmdlet 通常以 `Verb-Noun` 的形式命名,其中 `Verb` 描述了 Cmdlet 的操作,`Noun` 描述了 Cmdlet 的目标。例如,`Get-Process` 是一个 Cmdlet,用于获取系统中的进程列表。 | ||
|
||
### Pipeline | ||
|
||
Pipeline 是 PowerShell 的一个重要概念,它允许将 Cmdlet 的输出传递给另一个 Cmdlet。通过 Pipeline,我们可以将多个 Cmdlet 组合在一起,实现复杂的操作。例如,我们可以使用 `Get-Process` 获取进程列表,然后使用 `Sort-Object` 对进程列表进行排序。 | ||
|
||
### Alias | ||
|
||
Alias 是 PowerShell 的一个重要概念,它允许我们为 Cmdlet、函数、脚本块等创建别名。通过 Alias,我们可以使用简短的名称来调用 Cmdlet、函数、脚本块等。例如,我们可以为 `Get-Process` 创建别名 `gps`,然后使用 `gps` 来调用 `Get-Process`。 | ||
|
||
### Variable | ||
|
||
Variable 是 PowerShell 的一个重要概念,它用于存储数据。Variable 可以存储各种类型的数据,包括字符串、整数、数组、哈希表等。Variable 的名称以 `$` 开头,例如 `$a`、`$b`、`$c`。 | ||
|
||
### Function | ||
|
||
Function 是 PowerShell 的一个重要概念,它用于定义可重复使用的代码块。Function 可以接受参数,并返回结果。Function 的名称以 `function` 开头,例如 `function Test-Function { ... }`。 | ||
|
||
## 基本语法 | ||
|
||
### 注释 | ||
|
||
PowerShell 支持单行注释和多行注释。单行注释以 `#` 开头,多行注释以 `<#` 开头,以 `#>` 结尾。 | ||
|
||
```powershell | ||
# This is a single line comment | ||
<# | ||
This is a | ||
multi-line | ||
comment | ||
#> | ||
``` | ||
|
||
### 变量 | ||
|
||
PowerShell 使用 `$` 符号来表示变量。变量的名称可以包含字母、数字和下划线,但不能以数字开头。变量的值可以是任何类型的数据,包括字符串、整数、数组、哈希表等。 | ||
|
||
```powershell | ||
$a = 1 | ||
$b = "Hello, World!" | ||
$c = @("a", "b", "c") | ||
$d = @{ | ||
Name = "Alice" | ||
Age = 30 | ||
} | ||
``` | ||
|
||
### 字符串 | ||
|
||
PowerShell 使用双引号 `"` 来表示字符串。双引号中的变量会被替换为其值。如果字符串中包含特殊字符,可以使用反引号 `\` 进行转义。 | ||
|
||
```powershell | ||
$name = "Alice" | ||
Write-Host "Hello, $name!" | ||
Write-Host "Hello, `"World`"!" | ||
``` | ||
|
||
### 数组 | ||
|
||
PowerShell 使用 `@()` 来表示数组。数组可以包含任意类型的数据,包括字符串、整数、数组、哈希表等。数组的元素可以通过索引访问,索引从 0 开始。 | ||
|
||
```powershell | ||
$array = @("a", "b", "c") | ||
Write-Host $array[0] # Output: a | ||
Write-Host $array[1] # Output: b | ||
Write-Host $array[2] # Output: c | ||
``` | ||
|
||
### 哈希表 | ||
|
||
PowerShell 使用 `@{}` 来表示哈希表。哈希表由键值对组成,键和值之间使用 `=` 分隔,键值对之间使用 `,` 分隔。哈希表的键可以是任意类型的数据,值可以是任意类型的数据。 | ||
|
||
```powershell | ||
$hash = @{ | ||
Name = "Alice" | ||
Age = 30 | ||
} | ||
Write-Host $hash["Name"] # Output: Alice | ||
Write-Host $hash["Age"] # Output: 30 | ||
``` | ||
|
||
### 条件语句 | ||
|
||
PowerShell 使用 `if`、`elseif` 和 `else` 关键字来表示条件语句。条件语句根据条件表达式的结果执行不同的代码块。 | ||
|
||
```powershell | ||
$a = 10 | ||
if ($a -gt 0) { | ||
Write-Host "a is greater than 0" | ||
} elseif ($a -lt 0) { | ||
Write-Host "a is less than 0" | ||
} else { | ||
Write-Host "a is equal to 0" | ||
} | ||
``` | ||
|
||
### 循环语句 | ||
|
||
PowerShell 使用 `for`、`foreach`、`while` 和 `do-while` 关键字来表示循环语句。循环语句根据条件表达式的结果重复执行代码块。 | ||
|
||
```powershell | ||
# for 循环 | ||
for ($i = 0; $i -lt 5; $i++) { | ||
Write-Host $i | ||
} | ||
# foreach 循环 | ||
$array = @("a", "b", "c") | ||
foreach ($item in $array) { | ||
Write-Host $item | ||
} | ||
# while 循环 | ||
$i = 0 | ||
while ($i -lt 5) { | ||
Write-Host $i | ||
$i++ | ||
} | ||
# do-while 循环 | ||
$i = 0 | ||
do { | ||
Write-Host $i | ||
$i++ | ||
} while ($i -lt 5) | ||
``` | ||
|
||
### 函数 | ||
|
||
PowerShell 使用 `function` 关键字来定义函数。函数可以接受参数,并返回结果。函数的参数可以有默认值,也可以使用参数数组和参数哈希表。 | ||
|
||
```powershell | ||
function Add($a, $b) { | ||
return $a + $b | ||
} | ||
Write-Host (Add 1 2) # Output: 3 | ||
``` | ||
|
||
## 常用命令 | ||
|
||
### Get-Process | ||
|
||
`Get-Process` 命令用于获取系统中的进程列表。它可以接受多个参数,包括进程名称、进程 ID、计算机名称等。相当于 Linux 的 `ps` 命令。 | ||
|
||
```powershell | ||
Get-Process | ||
``` | ||
|
||
### Get-Service | ||
|
||
`Get-Service` 命令用于获取系统中的服务列表。它可以接受多个参数,包括服务名称、计算机名称等。相当于 Linux 的 `systemctl` 命令。 | ||
|
||
```powershell | ||
Get-Service | ||
``` | ||
|
||
### Get-Help | ||
|
||
`Get-Help` 命令用于获取 PowerShell 命令的帮助信息。它可以接受多个参数,包括命令名称、命令参数等。相当于 Linux 的 `man` 命令。 | ||
|
||
```powershell | ||
Get-Help Get-Process | ||
``` | ||
|
||
### Set-Variable | ||
|
||
`Set-Variable` 命令用于设置变量的值。它可以接受多个参数,包括变量名称、变量值等。 | ||
|
||
```powershell | ||
Set-Variable -Name a -Value 1 | ||
``` | ||
|
||
### Write-Host | ||
|
||
`Write-Host` 命令用于输出文本。它可以接受多个参数,包括文本内容、文本颜色等。 | ||
|
||
```powershell | ||
Write-Host "Hello, World!" | ||
``` | ||
|
||
### Start-Process | ||
|
||
`Start-Process` 命令用于启动进程。它可以接受多个参数,包括进程名称、进程路径、进程参数等。 | ||
|
||
```powershell | ||
Start-Process notepad.exe | ||
``` | ||
|
||
### Select-Object | ||
|
||
`Select-Object` 命令用于选择对象的属性。它可以接受多个参数,包括属性名称、计算属性等。 | ||
|
||
```powershell | ||
Get-Process | Select-Object -Property Name, CPU | ||
``` | ||
|
||
### Sort-Object | ||
|
||
`Sort-Object` 命令用于对对象进行排序。它可以接受多个参数,包括排序属性、排序方向等。类似于 Linux 的 `sort` 命令,不过 `Sort-Object` 可以对对象的属性进行排序。 | ||
|
||
```powershell | ||
Get-Process | Sort-Object -Property CPU | ||
``` | ||
|
||
### Measure-Object | ||
|
||
`Measure-Object` 命令用于测量对象的属性。它可以接受多个参数,包括统计属性、计算属性等。类似于 Linux 的 `wc` 命令,不过 `Measure-Object` 可以统计对象的属性。 | ||
|
||
```powershell | ||
cat file.txt | Measure-Object -Line | ||
``` | ||
|
||
## 总结 | ||
|
||
PowerShell 是一种跨平台的任务自动化和配置管理框架,它结合了传统的命令行工具、脚本语言和编程语言的优点,提供了强大的自动化功能。PowerShell 的基本概念包括 Cmdlet、Pipeline、Alias、Variable、Function 等。PowerShell 的基本语法包括注释、变量、字符串、数组、哈希表、条件语句、循环语句、函数等。PowerShell 的常用命令包括 Get-Process、Get-Service、Get-Help、Set-Variable、Write-Host、Start-Process 等。PowerShell 是 Windows 的一部分,可以在 Windows、Linux 和 macOS 上运行,具有更好的可移植性和跨平台性。 | ||
|
||
## 参考资料 | ||
|
||
1. [PowerShell Documentation](https://docs.microsoft.com/en-us/powershell/) | ||
2. [PowerShell Tutorial](https://www.tutorialspoint.com/powershell/index.htm) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters