PowerShell 技能连载 - AI 集成技巧

在 PowerShell 中集成 AI 功能是一项前沿任务,本文将介绍一些实用的 AI 集成技巧。

首先,让我们看看如何与 OpenAI API 进行交互:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 创建 OpenAI 交互函数
function Invoke-OpenAIAPI {
param(
[string]$ApiKey,
[string]$Prompt,
[ValidateSet('gpt-4', 'gpt-3.5-turbo')]
[string]$Model = 'gpt-3.5-turbo',
[float]$Temperature = 0.7,
[int]$MaxTokens = 500
)

try {
$headers = @{
'Content-Type' = 'application/json'
'Authorization' = "Bearer $ApiKey"
}

$body = @{
model = $Model
messages = @(
@{
role = "user"
content = $Prompt
}
)
temperature = $Temperature
max_tokens = $MaxTokens
} | ConvertTo-Json

$response = Invoke-RestMethod -Uri "https://api.openai.com/v1/chat/completions" -Method Post -Headers $headers -Body $body
return $response.choices[0].message.content
}
catch {
Write-Host "OpenAI API 调用失败:$_"
}
}

使用 AI 生成 PowerShell 脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 创建 AI 脚本生成函数
function New-AIScript {
param(
[string]$ApiKey,
[string]$Description,
[string]$OutputPath
)

try {
$prompt = @"
生成一个 PowerShell 脚本,完成以下功能:$Description

要求:
1. 脚本应包含详细的注释
2. 包含适当的错误处理
3. 遵循 PowerShell 最佳实践
4. 只返回脚本代码,不要额外的解释
"@

$script = Invoke-OpenAIAPI -ApiKey $ApiKey -Prompt $prompt -MaxTokens 2000

if ($OutputPath) {
$script | Out-File -FilePath $OutputPath -Encoding UTF8
Write-Host "脚本已保存至:$OutputPath"
}

return $script
}
catch {
Write-Host "AI 脚本生成失败:$_"
}
}

利用 AI 进行日志分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 创建 AI 日志分析函数
function Analyze-LogsWithAI {
param(
[string]$ApiKey,
[string]$LogFilePath,
[string]$OutputPath,
[switch]$IncludeRecommendations
)

try {
$logs = Get-Content -Path $LogFilePath -Raw

# 将日志截断到合理的大小
if ($logs.Length -gt 4000) {
$logs = $logs.Substring(0, 4000) + "... [日志截断]"
}

$promptSuffix = ""
if ($IncludeRecommendations) {
$promptSuffix = "并提供解决方案建议。"
}

$prompt = @"
分析以下系统日志,识别可能的错误、警告和问题模式$promptSuffix

日志内容:
$logs
"@

$analysis = Invoke-OpenAIAPI -ApiKey $ApiKey -Prompt $prompt -MaxTokens 1500

if ($OutputPath) {
$analysis | Out-File -FilePath $OutputPath -Encoding UTF8
Write-Host "分析结果已保存至:$OutputPath"
}

return $analysis
}
catch {
Write-Host "AI 日志分析失败:$_"
}
}

AI 辅助的自动化故障排除:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 创建 AI 故障排除函数
function Start-AITroubleshooting {
param(
[string]$ApiKey,
[string]$Issue,
[switch]$RunDiagnostics
)

try {
$systemInfo = Get-ComputerInfo | ConvertTo-Json

if ($RunDiagnostics) {
$eventLogs = Get-WinEvent -LogName Application -MaxEvents 20 | Select-Object TimeCreated, LevelDisplayName, Message | ConvertTo-Json
$services = Get-Service | Where-Object { $_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic' } | ConvertTo-Json

$diagnosticInfo = @"
系统信息:
$systemInfo

最近事件日志:
$eventLogs

已停止的自动启动服务:
$services
"@
} else {
$diagnosticInfo = "系统信息:$systemInfo"
}

$prompt = @"
我有以下系统问题:$Issue

基于以下系统信息,提供排查步骤和可能的解决方案:

$diagnosticInfo
"@

$troubleshooting = Invoke-OpenAIAPI -ApiKey $ApiKey -Prompt $prompt -MaxTokens 2000 -Model 'gpt-4'

return $troubleshooting
}
catch {
Write-Host "AI 故障排除失败:$_"
}
}

使用 AI 优化 PowerShell 脚本性能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 创建 AI 脚本优化函数
function Optimize-ScriptWithAI {
param(
[string]$ApiKey,
[string]$ScriptPath,
[string]$OutputPath,
[switch]$IncludeExplanation
)

try {
$script = Get-Content -Path $ScriptPath -Raw

$promptSuffix = ""
if ($IncludeExplanation) {
$promptSuffix = "并解释所做的改动和优化理由。"
}

$prompt = @"
优化以下 PowerShell 脚本的性能和代码质量$promptSuffix

脚本内容:
$script
"@

$optimizedScript = Invoke-OpenAIAPI -ApiKey $ApiKey -Prompt $prompt -MaxTokens 2000 -Model 'gpt-4'

if ($OutputPath) {
$optimizedScript | Out-File -FilePath $OutputPath -Encoding UTF8
Write-Host "优化后的脚本已保存至:$OutputPath"
}

return $optimizedScript
}
catch {
Write-Host "AI 脚本优化失败:$_"
}
}

这些技巧将帮助您更有效地在 PowerShell 中集成 AI 功能。记住,在处理 AI 相关任务时,始终要注意 API 密钥的安全性和成本控制。同时,建议使用适当的错误处理和日志记录机制来跟踪所有操作。

PowerShell 技能连载 - AI 集成技巧

http://blog.vichamp.com/2025/02/14/powershell-ai-integration/

作者

吴波

发布于

2025-02-14

更新于

2025-03-25

许可协议

评论