惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Securelist
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Spread Privacy
Spread Privacy
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
博客园_首页
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
O
OpenAI News
J
Java Code Geeks
T
Tenable Blog
K
Kaspersky official blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
T
Threatpost
月光博客
月光博客
H
Heimdal Security Blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Y
Y Combinator Blog
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
D
Docker
Google Online Security Blog
Google Online Security Blog
D
DataBreaches.Net
V
Visual Studio Blog
H
Help Net Security

博客园 - 润之

关于 Excel 中导入 JSON 文件 Git Bash 在使用 pacman 安装软件包时的报错问题处理 .NET 操作 RabbitMQ 踩坑记录 Git Bash 中 pacman 安装软件包失败的问题处理 深度操作系统 deepin 20.8 定制的 SSH 安全模块问题 关于在WSL中使用RabbitMQ的问题 访问局域网资源,出现“指定的网络密码不正确” 微信图片缓存中的 dat 文件处理 关于禅道的白屏问题 Python处理编码汉字的一些方法收集 使用xrdp远程管理debian的一些记录 安利一个分支版本的Notepad2 匿名类对象的相关测试 关于 Win10 下使用 IETester 的问题 关于 Windows 10 字体安装目录的问题 关于 NPOI 导出的 Excel 出现“部分内容有问题” 的解决方法 解决美图看看不出现在“Open with”的子菜单中的问题 关于BLOB/TEXT字段存储设计及性能的简单研究 Win10 远程服务器版
PowerShell脚本编写踩坑记
润之 · 2022-06-04 · via 博客园 - 润之

最近由于业务需要,想写个 PowerShell 脚本来实现数据库的一些批量操作,其实用 Python 实现起来是很简单的事,但不想在生产环境安装 Python 了,由于服务器是 Windows Server,想用 PowerShell 来实现试试,正好顺便体验一下号称宇宙最强的 Shell 到底是不是浪得虚名。

初期进行了一些相关的试验,基本上一切顺利,确保各种功能都可以实现,比如读写MySQL、调用.NET类库,感觉一切都没问题了,就正式制作了一个完整的生产脚本。

谁知道在最终测试的时候总是不行,问题总是出在一句读取数据的脚本上,这条语句要一次读出几万条数据,总是不读取,怀疑是由于读取的慢,被 PowerShell 的异步机制给忽略了,然后开始各种研究、各种折腾。尝试了 Start-Job -ScriptBlock 然后 Wait-Job / Receive-Job -Wait 都不行,而且在折腾 Job 模式的时候还发现,在 Job 代码块中没法调用全局代码中定义的函数和变量,好像这个代码块是一个新的独立进程一样,这个代码块里的变量什么的都要单独声明。

折腾了半下午,最后发现之前测试时能读取到数据的代码,在这个生产脚本中也不能读取到数据了,感觉有点灵异!最后经过逐步排查,最终发现问题竟然出在注释上!这简直太不可思议了!经过反复测试,发现只有某行注释中有“的记录”三个汉字,这行注释下面的一行自动失效,貌似也被注释掉了!例如:

$xx = "123"
# XXX的记录
$xx = "abc"

Write-Host $xx
# 这里输出的是 123
$xx = "123"
# XXX的记录

$xx = "abc"

Write-Host $xx
# 这里输出的是 abc


发现这个情况之后,在这行注释之后多空了一行,生产脚本工作起来就一切正常了!

PS. 第二天才发现,其实并不是 PowerShell 的 BUG,相信微软也不会出现这么低级的 BUG,其实是由于 PowerShell 的窗口环境对 UTF-8 的支持不好,而用 VSCode 创建的 PowerShell 脚本默认又是 UTF-8 格式,所以在执行脚本的时候,实际上是“的记录”这三个汉字产生了乱码,怀疑是乱码存在 BACKSPACE 或 DEL 符,导致把接下来的一行也拉到了和注释相同的一行。最终把脚本的编码改为GBK,一切问题都不存在了!