Powershell 从AnalyzeComponentStore提取值?

Powershell 从AnalyzeComponentStore提取值?,powershell,Powershell,大家好,请提前感谢可能的答案。 在我工作的地方,我们有不同的WS2016虚拟机,我们了解到更新可能会很痛苦,因为它们可能需要很长时间,而且我们不能在服务停止的情况下停留太久(我们有几个虚拟机要很快更新)。 在同一个帖子中,我们读到一条建议:清理WinSXS文件夹可以大大减少这一时间。 WS2016已经安排了此操作,但它有一个1小时的超时时间,因此如果超过此时间,进程将被终止。 解决方案是手动创建计划,因此我们为此制作了一个脚本,用于检查当前日期和上次更新日期,如果差异超过30天,则运行以下命令:

大家好,请提前感谢可能的答案。
在我工作的地方,我们有不同的WS2016虚拟机,我们了解到更新可能会很痛苦,因为它们可能需要很长时间,而且我们不能在服务停止的情况下停留太久(我们有几个虚拟机要很快更新)。
在同一个帖子中,我们读到一条建议:清理WinSXS文件夹可以大大减少这一时间。
WS2016已经安排了此操作,但它有一个1小时的超时时间,因此如果超过此时间,进程将被终止。
解决方案是手动创建计划,因此我们为此制作了一个脚本,用于检查当前日期和上次更新日期,如果差异超过30天,则运行以下命令:

dism.exe/Online/Cleanup Image/AnalyzeComponentStore

然后命令:

dism.exe/Online/Cleanup Image/StartComponentCleanup

现在真正的问题是…AnalyzeComponentStore的结果之一是:

建议进行组件存储清理

答案可能是肯定的,也可能是否定的
是否有方法检查此值是“是”(因此启动StartComponentCleanup)还是“否”(因此退出脚本)

再次感谢

@Doug Maurer…这是AnalyzeComponentStore的结果

PS C:>dism.exe/Online/Cleanup Image/AnalyzeComponentStore

部署映像服务和管理工具 版本:10.0.14393.3750

图像版本:10.0.14393.3241

[===========================================================================================================================================================================================================================================

组件存储(WinSxS)信息:

Windows资源管理器报告的组件存储大小:8.08 GB

组件存储的实际大小:7.94 GB

Shared with Windows : 6.12 GB
Backups and Disabled Features : 1.49 GB
Cache and Temporary Data : 323.47 MB
上次清理日期:2016-09-12 13:40:35

可回收包的数量:0
建议的组件存储清理:是

操作已成功完成

PS C:>

实现这一点有几种方法,我将列出两种,您可以选择您更喜欢的方法。其他人可能会提供替代方法

首先使用
selectstring
——只需将输出导入selectstring即可

$output = @'
Deployment Image Servicing and Management tool Version: 10.0.14393.3750

Image Version: 10.0.14393.3241

[===========================99.7%========================= ]

Component Store (WinSxS) information:

Windows Explorer Reported Size of Component Store : 8.08 GB

Actual Size of Component Store : 7.94 GB

Shared with Windows : 6.12 GB
Backups and Disabled Features : 1.49 GB
Cache and Temporary Data : 323.47 MB
Date of Last Cleanup : 2016-09-12 13:40:35

Number of Reclaimable Packages : 0
Component Store Cleanup Recommended : Yes

The operation completed successfully.
'@

$output | Select-String "Component Store Cleanup Recommended : (\w*)" | foreach {$_.matches.groups[1].value}
我使用了Foreach的输出变量参数,你也可以正常赋值

$cleanup = $output | Select-String "Component Store Cleanup Recommended : (\w*)" | foreach {$_.matches.groups[1].value}
第二个建议是使用-Match

$cleanup = if($output -match "Component Store Cleanup Recommended : (\w*)"){$matches[1]}
两者最终都会将
$cleanup
设置为您所追求的是/否值

Get-Variable cleanup

Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
cleanup                        {Yes} 
现在,您只需检查是否为“是”,如果是,则运行清理

if($cleanup -eq 'yes'){"run cleanup code"}

显示完整的输出,您可能会得到更好的答案。它以前有空位吗?冒号?谢谢。你只想知道它说是还是不是?其他信息都不重要吗?谢谢你的建议!我会尽快试一试!