如何使用ansiblepowershell生命周期管理系统为Windows功能删除卸载所有Windows Serv



我们已经配置了GitLab和Ansible来触发Windows Server的创建,我们实现了添加Windows特性,添加和删除Windows特性是在yaml中配置的;

Windows-Feature 
- SMTP-server 

我们已经成功地使用powershell创建了安装和卸载功能的逻辑,然而,我们看到每当我们卸载时,仍然有很多特定Windows功能安装的依赖项,例如;安装SMTP-server,安装依赖项;RSAT,RSAT- feature - tools,RSAT- smtp,Web-WebServer等等。删除'SMTP-server'仍然会安装依赖项,这是一个问题。

是否有生命周期管理系统或解决方案,可以管理卸载所有依赖于Windows特性的管道?

我们尝试;(Get-WindowsFeature -Name 'SMTP-Server')卸载带有while循环的windowsfeature,问题是(Get-WindowsFeature -Name 'SMTP-Server')。即使在嵌套的DependsOn上使用while循环遍历,DependsOn也不会返回所有依赖项。

图论,依赖树实现,但在Powershell或Ansible中没有明确的技术解决方案。

我们已经看过https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_feature_module.html,但它与ansible模块也是同样的问题。如果我们使用带值的参数状态,然后将参数状态更改为不存在的值,依赖项仍然会被安装。

我们发现我们可以使用Get-WindowsFeature并使用properties Parent,DependsOn来创建一个矩阵来删除从一个feature中安装的所有feature。