Powershell 相当于“dir /a”吗?

Powershell 相当于“dir /a”吗?

在我们的一台服务器上的给定目录上运行dir /a会产生一系列看起来像恶意软件的意外文件:

C:\Users\<username>dir /a c:\Users\Public\Downloads\
 Volume in drive C has no label.
 Volume Serial Number is 9999-9999

 Directory of c:\Users\Public\Downloads

09/15/2018  12:19 AM    <DIR>          .
09/15/2018  12:19 AM    <DIR>          ..
07/09/2023  09:28 PM            20,000 ZZZZZ2852017353.doc
07/21/2023  10:10 PM            50,240 !!!!!2729304900.doc
07/21/2023  09:34 PM         3,000,000 XORXOR2654977376.doc
07/21/2023  09:53 PM             1,024 smTlX4069337007.txt
07/09/2023  09:22 PM             2,024 ZZZZZ2452917832.docx
07/17/2023  08:59 PM             4,048 !!!!!910538317.pem
06/27/2023  08:58 PM            10,000 XORXOR2801197100.jpg
07/21/2023  08:27 PM            20,000 smTlX1631532574.png
07/21/2023  08:42 PM            25,000 ZZZZZ2426080075.bmp
07/21/2023  08:44 PM            30,000 !!!!!503919568.eml
07/09/2023  08:58 PM           100,000 XORXOR2564426092.xls
06/27/2023  08:53 PM           150,000 smTlX2350243133.xlsx
07/17/2023  09:41 PM           175,000 ZZZZZ3070700973.mdb
07/21/2023  09:53 PM           200,000 !!!!!533403438.ppt
07/21/2023  09:04 PM           225,000 XORXOR395504056.pps
07/09/2023  08:50 PM           250,000 smTlX634944309.pptx
07/09/2023  09:13 PM           275,000 ZZZZZ2775334046.pdf
06/27/2023  08:26 PM           300,000 !!!!!3608986092.avi
06/27/2023  08:56 PM           350,000 XORXOR189161240.db
06/27/2023  09:53 PM           350,000 smTlX416169661.pst
06/27/2023  09:54 PM           400,000 ZZZZZ2740091908.sql
07/21/2023  10:12 PM    <DIR>          !!!!!1300245113
09/15/2018  12:16 AM               174 desktop.ini
07/09/2023  09:28 PM            20,000 ZZZZZ3219714798.doc
07/21/2023  10:10 PM            50,240 !!!!!4004685157.doc
07/21/2023  09:34 PM         3,000,000 XORXOR3352709303.doc
07/21/2023  09:53 PM             1,024 smTlX3205606753.txt
07/09/2023  09:22 PM             2,024 ZZZZZ331100468.docx
07/17/2023  08:59 PM             4,048 !!!!!1274788081.pem
06/27/2023  08:58 PM            10,000 XORXOR647044953.jpg
07/21/2023  08:27 PM            20,000 smTlX1871256990.png
07/21/2023  08:42 PM            25,000 ZZZZZ638203430.bmp
07/21/2023  08:44 PM            30,000 !!!!!4241961912.eml
07/09/2023  08:58 PM           100,000 XORXOR1411632423.xls
06/27/2023  08:53 PM           150,000 smTlX743786790.xlsx
07/17/2023  09:41 PM           175,000 ZZZZZ4216568629.mdb
07/21/2023  09:53 PM           200,000 !!!!!2025383911.ppt
07/21/2023  09:04 PM           225,000 XORXOR1743807666.pps
07/09/2023  08:50 PM           250,000 smTlX229377095.pptx
07/09/2023  09:13 PM           275,000 ZZZZZ191670683.pdf
06/27/2023  08:26 PM           300,000 !!!!!1941248879.avi
06/27/2023  08:56 PM           350,000 XORXOR1946193784.db
06/27/2023  09:53 PM           350,000 smTlX2089358877.pst
06/27/2023  09:54 PM           400,000 ZZZZZ249794861.sql
07/21/2023  10:12 PM    <DIR>          !!!!!157789779
              43 File(s)     11,874,846 bytes
               4 Dir(s)  82,072,215,552 bytes free

无论我是否Command Prompt以“管理员身份”运行 - 都没关系,结果是一样的。

虽然恶意软件本身是一个单独的问题,但我想在 Powershell 中生成一个类似的列表,以便我可以尝试在多台机器上自动扫描这些文件和类似的文件。

然而,当我Get-ChildItem -Path "C:\Users\Public\Downloads\" -Force在同一台服务器上运行时(如其他地方所建议的,例如在“如何dir /A在 PowerShell 中列出文件夹中的所有文件(执行 cmd)?“),我得到了这个:

PS C:\Users\<username>> Get-ChildItem -Path "C:\Users\Public\Downloads\" -Force


    Directory: C:\Users\Public\Downloads


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a-hs-        9/15/2018  12:16 AM            174 desktop.ini

“以管理员身份”运行上述操作 - 结果相同。

...这引出了标题问题:

Powershell 中与“dir /a”等效的是什么?

附言

  • 我无法让相关文件显示在文件资源管理器中 - 即使我启用了隐藏文件和系统文件
  • 这是 Windows Server 2019。它的C:\驱动器以每月约 95GB 的速度线性增长。当单独检查所有根目录的大小(100-150GB)时,使用的总磁盘空间(320GB)似乎不合算。我觉得这些文件可能是罪魁祸首。

答案1

我不完全确定dir /A输出全部文件按照文档指定,但如果确实如此,您可以在 PowerShell 中以相同的方式执行相同操作:

Get-ChildItem -Attributes ([System.IO.FileAttributes].GetEnumValues() -Join ",") -Force

解释:

  • System.IO.FileAttributesEnum包含文件/目录属性的所有可能值的
  • 我们得到一个带有值的数组,GetEnumValues()并将它们作为带有,字符的字符串连接起来,这OR意味着-Attributes参数值
  • 然后也-Force用于以防万一,但可能不需要

为了优化脚本,您当然也可以获取 PowerShell shell 中的属性值并将其粘贴为长字符串。

答案2

Get-ChildItem -Attributes Directory,Hidden,System,ReparsePoint,ReadOnly,Archive,NotContentIndexed,Offline

相关内容