[PowerShell 入门教程]第3天课后作业答案及解析

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

✅ 第3天课后作业答案与解析

作业1:编写函数 Get-LargeFiles

🎯 要求
  • 接受路径($Path)和最小大小(MB,$MinSizeMB
  • 返回大于指定大小的文件列表
  • 显示:文件名 + 大小(MB,保留2位小数)
✅ 参考答案
function Get-LargeFiles {
    param(
        [string]$Path = ".",
        [double]$MinSizeMB = 10  # 默认10MB
    )

    # 验证路径是否存在
    if (-not (Test-Path -Path $Path -PathType Container)) {
        Write-Error "路径不存在或不是目录: $Path"
        return
    }

    # 获取所有文件(递归)
    $files = Get-ChildItem -Path $Path -File -Recurse -ErrorAction SilentlyContinue

    # 筛选大文件并格式化输出
    $files | Where-Object { $_.Length -gt ($MinSizeMB * 1MB) } |
             Select-Object Name,
                           @{Name="SizeMB"; Expression={[math]::Round($_.Length / 1MB, 2)}},
                           FullName
}
🔍 使用示例
# 查找当前目录下大于 50MB 的文件
Get-LargeFiles -Path . -MinSizeMB 50

# 使用默认参数(当前目录,>10MB)
Get-LargeFiles
💡 解析要点
  • [double]$MinSizeMB:允许输入小数(如 0.5 MB)
  • 1MB:PowerShell 内置常量 = 1024 × 1024 字节
  • 计算属性 @{Name="SizeMB"; Expression={...}}:动态生成新列
  • -ErrorAction SilentlyContinue:跳过无权限访问的文件,避免中断
  • Write-Error:抛出非终止错误,符合 PowerShell 规范

作业2:用 while 实现“猜数字”游戏(1–100)

🎯 要求
  • 随机生成 1–100 的整数
  • 用户输入猜测值
  • 提示“太大”/“太小”,直到猜中
  • 猜中后显示尝试次数
✅ 参考答案
# 生成随机数(1 到 100)
$target = Get-Random -Minimum 1 -Maximum 101
$guess = 0
$count = 0

Write-Host "🎮 欢迎玩猜数字游戏!范围:1–100" -ForegroundColor Cyan

while ($guess -ne $target) {
    $input = Read-Host "请输入你的猜测"
    
    # 验证输入是否为数字
    if (-not ($input -match '^\d+$')) {
        Write-Host "❌ 请输入一个有效的整数!" -ForegroundColor Red
        continue
    }

    $guess = [int]$input
    $count++

    if ($guess -lt $target) {
        Write-Host "📈 太小了!再试试。" -ForegroundColor Yellow
    } elseif ($guess -gt $target) {
        Write-Host "📉 太大了!再试试。" -ForegroundColor Yellow
    } else {
        Write-Host "🎉 恭喜你!猜中了!答案是 $target,共尝试 $count 次。" -ForegroundColor Green
    }
}
💡 解析要点
  • Get-Random -Maximum 101:上限是开区间,所以 101 才能包含 100
  • -match '^\d+$':正则验证输入是否为纯数字(防崩溃)
  • continue:跳过本次循环,重新提示输入
  • 用户体验:彩色提示 + 清晰反馈

作业3:用 switch 模拟简易菜单

🎯 要求
  • 循环显示菜单:
    请选择操作:
    1. 显示当前日期
    2. 显示进程数量
    3. 退出
  • 根据输入执行对应操作
✅ 参考答案
do {
    Clear-Host  # 清屏(可选)
    Write-Host "===================="
    Write-Host "  简易系统菜单"
    Write-Host "===================="
    Write-Host "1. 显示当前日期"
    Write-Host "2. 显示进程数量"
    Write-Host "3. 退出"
    Write-Host "===================="

    $choice = Read-Host "请输入选项 (1-3)"

    switch ($choice) {
        '1' {
            Write-Host "📅 当前日期和时间: $(Get-Date)" -ForegroundColor Green
            Pause  # 按任意键继续
        }
        '2' {
            $procCount = (Get-Process).Count
            Write-Host "📊 当前运行进程数: $procCount" -ForegroundColor Green
            Pause
        }
        '3' {
            Write-Host "👋 再见!" -ForegroundColor Cyan
        }
        default {
            Write-Host "⚠️ 无效选项,请输入 1、2 或 3。" -ForegroundColor Red
            Start-Sleep -Seconds 1
        }
    }
} while ($choice -ne '3')
💡 解析要点
  • do...while:确保至少执行一次菜单
  • switch 匹配字符串 '1' 而非数字 1:因为 Read-Host 返回的是字符串
  • Pause:Windows 特有命令,等效于 Read-Host "按回车继续..."
  • Clear-Host:清屏提升体验(Linux/macOS 用 clear,但 Clear-Host 跨平台)

📌 总结:核心知识点回顾

作业涉及语法关键技巧
1函数、参数、计算属性、管道过滤错误处理 + 单位转换(MB)
2whileGet-Random、正则验证用户输入校验 + 友好交互
3switchdo...whileRead-Host菜单循环 + 字符串匹配

✅ 完成这三项作业,你就掌握了:

  • 如何封装可复用逻辑(函数)
  • 如何与用户交互(循环 + 输入)
  • 如何用 switch 替代冗长的 if/elseif

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值