关于powershell常用语法说明
  WrKbzYIY5GyU 2023年11月02日 70 0

1 变量使用说明

# 声明和赋值变量
$var = "Hello, World!"

# 输出变量值
Write-Host $var

2 交互式输入

# 从用户获取输入
$name = Read-Host "Enter your name"
Write-Host "Hello, $name!"

3 多分支判断

$number = 5

if ($number -gt 10) {
    Write-Host "Number is greater than 10"
} elseif ($number -lt 5) {
    Write-Host "Number is less than 5"
} else {
    Write-Host "Number is between 5 and 10"
}

4 foreach遍历

# 遍历数组
$fruits = @("Apple", "Banana", "Orange")

foreach ($fruit in $fruits) {
    Write-Host $fruit
}

# 遍历哈希表(键值对)
$person = @{
    "Name" = "John"
    "Age" = 30
}

foreach ($key in $person.Keys) {
    Write-Host "$key: $($person[$key])"
}

5 函数定义

# 定义函数
function SayHello($name) {
    Write-Host "Hello, $name!"
}

# 调用函数
SayHello "Alice"

6 csv文件操作

# 读取 CSV 文件
$csvFilePath = "C:\data.csv"
$data = Import-Csv -Path $csvFilePath

# 遍历 CSV 数据
foreach ($row in $data) {
    Write-Host "Name: $($row.Name), Age: $($row.Age)"
}

# 导出为 CSV 文件
$outputFilePath = "C:\output.csv"
$data | Export-Csv -Path $outputFilePath -NoTypeInformation

7 正则提取

# 提取行中的日期部分(YYYY-MM-DD 格式)
$line = "Today's date is 2023-08-28"
$date = [regex]::Match($line, '\d{4}-\d{2}-\d{2}').Value
Write-Host $date


# 提取第3到第7列的字符
$line = "12345-67890-ABCDE"
$columns = [regex]::Match($line, '(.{2})(.{5})').Groups[2].Value
Write-Host $columns

8 通过截取方式来获取值,类似awk

echo "123-456-789" | % {$_.split('=')[0]}
# 以-位分隔符,截取第一列,计算机是以0开始计算的
# 使用类似 AWK 的方式截取第3和第7列
Get-Content -Path "file.txt" | ForEach-Object { $_ -split '\s+' } | Select-Object -Property @{Name="Column3"; Expression={$_.[2]}}, @{Name="Column7"; Expression={$_.[6]}}

#改成多行处理
# 使用类似 AWK 的方式截取第3和第7列(多行处理)
$lines = Get-Content -Path "file.txt"
$results = foreach ($line in $lines) {
    $columns = $line -split '\s+'
    [PSCustomObject]@{
        Column3 = $columns[2]
        Column7 = $columns[6]
    }
}
$results

在这个示例中,我们首先使用 Get-Content cmdlet 将文件内容读入到 $lines 数组中。然后,通过 foreach 循环遍历每一行文本。

在循环中,我们将每一行的列拆分成数组,并使用 [PSCustomObject] 创建一个自定义对象,其中包含了第3列和第7列的值。最后,将每个自定义对象添加到 $results 数组。

通过这种方式,您可以实现逐行处理并将提取的列保存到自定义对象中。最终,$results 数组将包含所有行的截取结果,您可以随意处理或输出。

希望这个示例满足了您的需求!如果您还有其他问题,请随时提问。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  vxoexqgjyiCS   2023年11月25日   19   0   0 linuxbash数组
  9JCEeX0Eg8g4   2023年11月22日   21   0   0 堆排序子节点数组
  3n45YYmVLV9P   2023年11月13日   52   0   0 指针变量运算符数组