From e755d14a77af77093d1ada473159010451b457f6 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 29 九月 2026 11:03:35 +0800
Subject: [PATCH] 修 22 所取数程序在参数默认值里取脚本目录失败的问题
---
scripts/j22-collector.ps1 | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/scripts/j22-collector.ps1 b/scripts/j22-collector.ps1
index 50fc189..9b912d2 100644
--- a/scripts/j22-collector.ps1
+++ b/scripts/j22-collector.ps1
@@ -50,13 +50,22 @@
[int]$ConnectTimeoutSec = 10,
[int]$CommandTimeoutSec = 15,
[int]$HttpTimeoutSec = 30,
- [string]$StateFile = (Join-Path $PSScriptRoot 'j22-collector-state.json'),
- [string]$LogFile = (Join-Path $PSScriptRoot 'j22-collector.log'),
+ # 下面两个留空即在正文里解析成"脚本同目录";不要写成 param 默认值:
+ # Windows PowerShell 的参数默认值不在脚本作用域里求值,$PSScriptRoot 在那里是空的(现场实测踩到)。
+ [string]$StateFile,
+ [string]$LogFile,
[switch]$Once
)
$ErrorActionPreference = 'Continue'
+# 脚本所在目录:$PSScriptRoot 为主,取不到时退回命令路径、再退回当前目录。
+$ScriptDirectory = $PSScriptRoot
+if ([string]::IsNullOrEmpty($ScriptDirectory)) { $ScriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path }
+if ([string]::IsNullOrEmpty($ScriptDirectory)) { $ScriptDirectory = (Get-Location).Path }
+if ([string]::IsNullOrEmpty($StateFile)) { $StateFile = Join-Path $ScriptDirectory 'j22-collector-state.json' }
+if ([string]::IsNullOrEmpty($LogFile)) { $LogFile = Join-Path $ScriptDirectory 'j22-collector.log' }
+
# ---------------------------------------------------------------- 日志
function Write-Log([string]$message) {
$line = (Get-Date -Format 'yyyy-MM-dd HH:mm:ss') + ' ' + $message
--
Gitblit v1.7.1