一、安装与基础配置

1.1 一键安装 Claude Code (PowerShell)

# 官方推荐安装方式(无需管理员权限)
irm https://claude.ai/install.ps1 | iex

# 验证安装
claude --version

# 登录认证
claude login

# 诊断安装问题
claude doctor

1.2 备用安装方式

# npm 全局安装
npm install -g @anthropic-ai/claude-code

# 临时运行(不安装)
npx @anthropic-ai/claude-code

1.3 环境变量配置

# 设置 API Key(临时会话)
$env:ANTHROPIC_API_KEY = "sk-ant-xxxxxxxxxxxxxxxxxxxx"

# 设置自定义 API 端点
$env:ANTHROPIC_BASE_URL = "https://api.your-proxy.com"

# 永久保存到用户环境变量
[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-xxxxxxxx", "User")

二、启用 PowerShell 工具

2.1 启用方法

方法一:通过 /config 菜单

/config
# 导航到 "Tools & Execution" → 启用 "PowerShell Tool (Preview)"

方法二:编辑 settings.json

// %USERPROFILE%\.claude\settings.json
{
  "env": {
    "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"
  },
  "defaultShell": "powershell",
  "tools": {
    "powershell": {
      "enabled": true,
      "version": "pwsh", // "pwsh" for PowerShell 7, "powershell" for 5.1
      "allowedCommands": [
        "Get-ChildItem",
        "Get-Content",
        "Get-CimInstance"
      ]
    }
  }
}

2.2 验证启用

在 Claude Code 中输入:

Do your available tools include PowerShell?

三、Claude Code CLI 基础命令

3.1 启动与退出

# 启动交互式会话
claude

# 单次查询(无头模式)
claude -p "解释这段代码的功能"

# 启动并加载指定项目
claude ./my-project

# 退出会话
/exit 或 Ctrl+C

3.2 模式切换

# 自动编辑模式(无需确认)
claude yolo

# 计划模式(先生成执行计划)
claude plan

# 聊天模式(默认)
claude chat

3.3 管道与文件输入

# 管道输入
Get-Content .\script.js | claude -p "优化这段代码"

# 从文件读取提示词
claude -f .\prompt.md

# 输出到文件
claude -p "生成一个 README.md" > README.md

四、Claude Code 内部 Slash 命令

命令 功能
/help 显示所有可用命令
/clear 清除当前对话上下文
/compact 压缩对话历史以节省上下文空间
/history 查看对话历史
/rewind 回滚到上一个检查点
/resume 恢复暂停的任务
/config 打开设置菜单
/env 管理环境变量
/plugin 管理插件
/mcp 管理 MCP 服务
/reload-plugins 重新加载所有插件

4.1 环境变量管理

/env NODE_ENV=production
/env AZURE_SUBSCRIPTION_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
/env --unset NODE_ENV

五、PowerShell 工具基础操作

5.1 文件与目录操作

# 递归列出所有 TypeScript 文件
Get-ChildItem -Path . -Recurse -Filter "*.ts" | Select-Object FullName

# 读取文件内容
Get-Content .\src\components\Button.tsx

# 创建新目录
New-Item -ItemType Directory -Path ".\src\features\auth"

# 创建文件备份
Copy-Item .\config.json .\config.json.bak

# 删除文件(带确认)
Remove-Item .\old-file.txt -Confirm

# 移动文件
Move-Item .\temp.txt .\docs\

5.2 系统信息查询

# 检查 Node.js 版本
node --version

# 查看可用内存
Get-CimInstance Win32_OperatingSystem | Select-Object FreePhysicalMemory, TotalVisibleMemorySize

# 查看 CPU 信息
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed

# 查看磁盘使用情况
Get-PSDrive -PSProvider FileSystem | Select-Object Name, Used, Free

# 查看运行中的进程
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

5.3 Windows 服务管理

# 列出所有以 W 开头的服务
Get-Service | Where-Object { $_.Name -like 'W*' } | Export-Csv -Path services.csv -NoTypeInformation

# 启动服务
Start-Service -Name "wuauserv"

# 停止服务
Stop-Service -Name "wuauserv"

# 重启服务(带权限检查)
function Restart-ServiceIfPossible {
  param([string]$ServiceName)
  $svc = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue
  if (-not $svc) { Write-Warning "Service not found: $ServiceName"; return }
  try {
    Restart-Service -Name $ServiceName -Force -ErrorAction Stop
    Write-Host "Restarted: $ServiceName"
  } catch {
    Write-Warning "Restart failed (likely needs admin). Try: Start-Process pwsh -Verb RunAs"
  }
}

5.4 包管理

# 列出顶级 npm 包
npm list --depth=0

# 更新全局包
npm update -g

# 使用 pnpm 安装(冻结锁文件)
pnpm install --frozen-lockfile

# 使用 winget 安装软件
winget install --id Microsoft.PowerShell -e --silent

# 检查已安装的 winget 包
winget list --id Microsoft.VisualStudioCode -e

六、实用自动化脚本与工作流

6.1 项目依赖一键安装

# 安装项目所需的所有工具
$tools = @("Microsoft.PowerShell", "GitHub.cli", "Microsoft.DotNet.SDK.9", "Microsoft.VisualStudioCode")
foreach ($id in $tools) {
  if (-not (winget list --id $id -e --accept-source-agreements 2>$null | Select-String $id)) {
    winget install --id $id -e --silent --accept-source-agreements --accept-package-agreements
  } else {
    Write-Host "Skip: $id (already installed)"
  }
}

6.2 Git PR 一键工作流

# 创建分支 → 提交 → 推送 → 创建 PR
$branch = "feat/$(Get-Date -Format yyyyMMdd-HHmm)-claude-edit"
git checkout -b $branch
git add -A
git commit -m "Apply Claude edits"
git push -u origin $branch
gh pr create --fill --web

6.3 .NET 测试与覆盖率

# 运行测试并生成覆盖率报告
$proj = ".\src\MyApp.Tests\MyApp.Tests.csproj"
dotnet test $proj `
  --collect:"XPlat Code Coverage" `
  --results-directory ./TestResults `
  --logger "console;verbosity=normal"
$cov = Get-ChildItem .\TestResults -Recurse -Filter coverage.cobertura.xml | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "Coverage report: $($cov.FullName)"

6.4 Windows 事件日志分析

# 获取过去 24 小时的错误事件
$since = (Get-Date).AddHours(-24)
Get-WinEvent -LogName "Application" -FilterHashtable @{
  Level = 2
  StartTime = $since
} | Select-Object TimeCreated, Id, Message | Format-Table -AutoSize

6.5 跨 WSL/PowerShell 边界

# 正确地从 WSL 中 grep Windows 路径
$winPath = "C:\Users\me\proj"
$wslPath = wsl wslpath -a "$winPath"
wsl rg --hidden --no-ignore "TODO" $wslPath

七、高级配置与技巧

7.1 自定义命令

在项目根目录创建 .claude/commands/finalize.md

# Finalize Task

1. 运行所有测试
2. 修复所有 linting 问题
3. 使用 conventional commit 格式提交更改
4. 创建 pull request
5. 如有需要更新文档

然后在 Claude Code 中使用:

/finalize

7.2 钩子(Hooks)配置

// ~/.claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "PowerShell",
        "shell": "powershell",
        "command": "Write-Host 'Running PowerShell command...'"
      }
    ]
  }
}

7.3 安全提示

  • 避免使用 dangerously-skip-permissions 在生产环境
  • PowerShell 工具不支持自动模式(Auto Mode)
  • PowerShell 配置文件($PROFILE)不会被加载
  • 后台作业(&)会触发确认提示

八、常见问题与解决方案

8.1 “Running scripts is disabled on this system”

# 查看当前执行策略
Get-ExecutionPolicy -List

# 允许当前用户运行本地脚本(推荐)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

8.2 “pwsh is not found”

# 安装 PowerShell 7
winget install --id Microsoft.PowerShell -e

# 或者在 settings.json 中使用 PowerShell 5.1
"version": "powershell"

8.3 “claude 不是内部或外部命令”

# 查看 npm 全局目录
npm config get prefix

# 将该目录下的 node_modules\.bin 添加到系统 PATH
$bin = "C:\Users\YourName\AppData\Roaming\npm\node_modules\.bin"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", $userPath + ";" + $bin, "User")

8.4 太多确认提示

settings.json 中添加允许的命令:

"tools": {
  "powershell": {
    "allowedCommands": [
      "Get-ChildItem",
      "Get-Content",
      "Get-CimInstance",
      "node",
      "npm",
      "pnpm"
    ]
  }
}
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐