欢迎各位兄弟 发布技术文章
这里的技术是共享的
aa.ps1 的内容
# 如需包含 32位软件(64位系统),补充以下命令并合并结果
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* `
| Select-Object DisplayName, DisplayVersion, Publisher, InstallDate `
| Where-Object{$_.DisplayName -ne $null } `
| Sort-0bject DisplayName `
| Out-File "C:\已安装软件列表 32位.txt"
PS C:\Users\16666739> C:\Users\16666739\Desktop\test4\aa.ps1
Sort-0bject : 无法将“Sort-0bject”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 C:\Users\16666739\Desktop\test4\aa.ps1:6 字符: 3
+ | Sort-0bject DisplayName `
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Sort-0bject:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
从错误信息来看,您的脚本中 Sort-0bject(注意是数字0而不是字母O)无法被识别,因为 PowerShell 正确的 cmdlet 名称是 Sort-Object,即字母 "O",而不是数字 "0"。
powershell# 收集系统级软件 (64位) $64bitApps = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* ` | Where-Object { $_.DisplayName -ne $null } ` | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate ` | Sort-Object DisplayName # 收集 32位软件 (在64位系统上) $32bitApps = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* ` | Where-Object { $_.DisplayName -ne $null } ` | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate ` | Sort-Object DisplayName # 合并结果并导出 $allApps = $64bitApps + $32bitApps $allApps | Out-File "C:\已安装软件列表.txt"
Sort-0bject → Sort-Object (数字“0”换成“O”)
增加了 $64bitApps 收集 64 位软件,然后合并 $32bitApps 数据,最后输出到一个文件。
powershell# 64 + 32 位软件合并后导出 Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* ` | Where-Object { $_.DisplayName } ` | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate ` | Sort-Object DisplayName ` | Out-File "C:\已安装软件列表.txt"
Get-ItemPropertys 路径不用 |(竖线),应使用 \(反斜杠)。
Sort-Object(排序)是 PowerShell 标准 cmdlet,不要写成 Sort-0bject(带数字0的无效命令)。
Out-File 默认是 Unicode 编码,如果想 UTF-8 可以加 -Encoding UTF8。
这样就解决了你的问题,不会有 Sort-0bject 报错了!🚀