powershell - Powershell Get-Random,日期被“此脚本包含恶意内容”阻止
问题描述
我正在为实验室环境生成文件,其中包含用于创建、修改和上次访问的随机日期。这一直运行良好,直到最近 Powershell/VSCode 开始阻止脚本,因为它包含“恶意代码”。几天前,这段代码运行得很好:
$MaximumDate = Get-Date
[datetime]$CreationDate = $MaximumDate.AddYears(-10).Ticks
[datetime]$ModificationDate = Get-Random -Minimum $CreationDate.Ticks -Maximum ($MaximumDate.AddSeconds(-1)).Ticks
[datetime]$LastAccessDate = Get-Random -Minimum $ModificationDate.Ticks -Maximum $MaximumDate.Ticks
从昨天开始运行它时,它会引发以下错误:
At line:3 char:1
+ [datetime]$ModificationDate = Get-Random -Minimum $CreationDate.T ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This script contains malicious content and has been blocked by your antivirus software.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ScriptContainedMaliciousContent
这篇博文表明这是 Windows Defender 造成的。对于该海报,等待新的更新解决了它,但我不太热衷于必须依赖特定的 Windows 更新才能使其工作。这里有一些有趣的发现。
此代码被阻止:
[datetime]$ModificationDate = Get-Random -Minimum $CreationDate.Ticks -Maximum ($MaximumDate.AddSeconds(-1)).Ticks
此代码有效:
$Ticks = Get-Random -Minimum $CreationDate.Ticks -Maximum ($MaximumDate.AddSeconds(-1)).Ticks
[datetime]$ModificationDate = $Ticks
但是,如果您将该工作代码放在 if/else 语句中,它会再次失败:
if(any condition you like){
$Ticks = Get-Random -Minimum $CreationDate.Ticks -Maximum ($MaximumDate.AddSeconds(-1)).Ticks
[datetime]$ModificationDate = $Ticks
}
else{
$Ticks = Get-Random -Minimum $MinimumDate.Ticks -Maximum $CreationDate.Ticks
[datetime]$ModificationDate = $Ticks
}
VSCode 似乎不喜欢 Get-Random 并认为它是恶意的。该代码在 Powershell 中运行,但在从 VSCode 运行时被阻止。有谁知道发生了什么?
编辑:为了澄清起见,我正在使用本地管理员、域管理员的用户运行代码,并以管理员身份运行 PS 和 VSCode,Get-ExecutionPolicy 显示“绕过”,因此它不应该是权限问题。
解决方案
已解决:Windows 更新。
正如怀疑的那样,Evotec 链接中的解决方案似乎是罪魁祸首。在最近的 Windows 更新之后,随机化日期时间并将其分配给变量不再触发“恶意代码”错误。
推荐阅读
- sapui5 - sapui5 如何在控制器中读取 PDF 文件内容
- mysql - 我对两个表的更新查询不起作用(MYSQL)
- ruby-on-rails - 用于管理 ActiveMailer 生成的队列的选项
- php - 使用 dockerfile 安装 Composer
- excel - 从 Dynamics 365 刷新 Excel
- spatstat - 采样图像以获取点模式
- java - 如何在 mapbox 中创建多边形区域
- excel - 计算 Excel 工作表中的文本匹配项,其中同一行上的其他两个单元格匹配一个值
- git - 在 git 上移动某些文件时,它们不会被视为“重命名”
- doctrine - Doctrine discriminator 如何知道从地图中使用哪个实体