0%

Windows Powershell 命令使用

在 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
    10
    PS 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. **分号 (;)**:在同一行中用分号分隔多个命令。所有命令都会被执行,不论前面的命令是否成功。

    1
    mkdir test; cd test; echo "Created and entered directory"
  2. **逻辑操作符 -and-or**:根据前一个命令的结果决定是否执行下一个命令。-and 表示左侧命令成功则继续;-or 表示左侧失败则执行右侧。

    1
    (Get-Process notepad) -and (echo "Notepad is running") -or (echo "Notepad is not running")
  3. **管道 (|)**:主要用于将一个命令的输出作为另一个命令的输入,适合处理数据流而不是简单的命令序列。

  4. &&|| 语法(PowerShell 7+):提供更直观的命令链,类似于 Linux Shell 的习惯用法。

    1
    mkdir test && cd test || Write-Error "Failed to create or enter directory"
  5. 循环结构:如 forforeachwhile,用于重复执行相同的命令或一组命令。

    1
    for ($i = 1; $i -le 10; $i++) { someCommand }
  6. Start-Process& 调用运算符:适用于外部命令或需要特殊环境设置的情况。