[PowerShell 入门教程]第2天课后作业答案
第2天课后作业答案
作业1:列出所有状态为 “Stopped” 的服务,并显示 Name 和 DisplayName
Get-Service |
Where-Object { $_.Status -eq 'Stopped' } |
Select-Object Name, DisplayName💡 说明:
Get-Service获取所有服务对象Where-Object过滤状态为'Stopped'的服务(注意:字符串比较区分大小写?在 Windows 上默认不区分)Select-Object选择要显示的两个属性
作业2:获取当前目录下所有 .txt 文件,输出名称和大小(KB)
$files = Get-ChildItem -Path . -Filter *.txt -File
$files | ForEach-Object {[PSCustomObject]@{FileName = $_.NameSizeKB = [math]::Round($_.Length / 1KB, 2)}
}🔍 说明:
-File确保只返回文件(排除目录)1KB是 PowerShell 内置常量(等于 1024)- 使用
[PSCustomObject]创建结构化输出,便于后续处理或导出
作业3:运行 .ps1 脚本并解决执行策略问题
步骤1:创建脚本文件
在任意目录新建 hello.ps1,内容为:
Write-Host "Hello from PowerShell!"步骤2:直接运行(会报错)
.\hello.ps1错误示例:
无法加载文件 hello.ps1,因为在此系统上禁止运行脚本。步骤3:正确方式运行(任选其一)
✅ 方法A:临时绕过策略(推荐测试用)
PowerShell -ExecutionPolicy Bypass -File ".\hello.ps1"✅ 方法B:设置当前用户策略为 RemoteSigned(推荐开发用)
# 以普通用户身份运行(无需管理员)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
.\hello.ps1 # 现在可以正常运行⚠️ 切勿在生产环境使用
Unrestricted!
