最近我让 AI 帮写了一些脚本,都是和文件操作有关的。前段时间写了个 ps 脚本,刚才又写了个 bat 脚本,都因为编码问题踩了坑。
bat 脚本需要用记事本保存为 ANSI 编码,不能使用 UTF-8,否则会导致脚本内容解析错误而无法运行。
而且还有个坑:我的系统是 Windows 11 简体中文版,AI 说 ANSI 编码在简体中文系统中对应 GBK/GB18030,但我在 VSCode 里保存成这两种编码依然报错,最后只能用记事本保存为 ANSI 编码的才能正常运行。
PowerShell 5.1 脚本需要保存为 UTF-8 with BOM 编码,不带 BOM 不行。
更新:PowerShell 有个开源版本(PowerShell 7),它是需要独立安装的,也是独立运行的(与 Windows 自带的 PowerShell 5.1 并存)。它的脚本后缀名也是 .ps1,但是不需要带 BOM,不会因为编码问题踩坑了。而且 PS 7 对路径、文件名里的中文支持更好,我现在已经用它替代了 PS 5.1。
默认情况下,IIS会为每个网站分配一个应用程序池,也有默认的回收策略。为什么我们要去修改IIS的应用程序池回收策略呢?因为如果某网站的应用程序池被回收后,下次有人要访问这个网站,IIS要新开一个进程来为该网站建立应用程序池,那么很不幸的,这个人需要等待较长的时间才能打开网站(只有第一个人会被影响)。这对访客来说自然是不友好的,所以必要时我们可以修改IIS的回收策略。
IIS的默认设置是根据时间来进行回收。此外我们也可以通过限制内存使用量来回收,不过不常用。本文要修改的也是时间策略。
打开IIS的应用程序池的默认设置:

修改默认设置可以将更改批量应用到所有站点中,这样比较方便。
Read More →