在 PowerShell 中,实现类似于 Linux 中 xxx | grep "test" 的功能来过滤包含特定字符的数据
someCommand | Select-String "test"- 从文件内容中过滤匹配:
Get-Content xxx.txt | Select-String "test" - 当前目录文件/文件夹名过滤匹配:
Get-ChildItem | Select-String "test"或dir | Select-String "test" - 只在文件夹中进行选择,并将输出传给其他命令:
1
2
3
4
5
6
7
8
9
10PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | code
Run with 'code -' to read output from another program (e.g. 'echo Hello World | code -').
PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | code -
Reading from stdin via: C:\Users\DHW\AppData\Local\Temp\code-stdin-rKL
PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | ForEach-Object { code $_.FullName }
PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | ForEach-Object { code $_.FullName }
PS E:\repositories> code E:\repositories\30dayMakeCppServer
PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | ForEach-Object { code $_.FullName }
PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | ForEach-Object { code $_.FullName }
PS E:\repositories> Get-ChildItem -Directory | Select-String 30day | ForEach-Object { code $_.FullName }
Powershell中,依次运行多个命令
**分号 (
;)**:在同一行中用分号分隔多个命令。所有命令都会被执行,不论前面的命令是否成功。1
mkdir test; cd test; echo "Created and entered directory"
**逻辑操作符
-and和-or**:根据前一个命令的结果决定是否执行下一个命令。-and表示左侧命令成功则继续;-or表示左侧失败则执行右侧。1
(Get-Process notepad) -and (echo "Notepad is running") -or (echo "Notepad is not running")
**管道 (
|)**:主要用于将一个命令的输出作为另一个命令的输入,适合处理数据流而不是简单的命令序列。&&和||语法(PowerShell 7+):提供更直观的命令链,类似于 Linux Shell 的习惯用法。1
mkdir test && cd test || Write-Error "Failed to create or enter directory"
循环结构:如
for、foreach或while,用于重复执行相同的命令或一组命令。1
for ($i = 1; $i -le 10; $i++) { someCommand }
Start-Process或&调用运算符:适用于外部命令或需要特殊环境设置的情况。