salt-stack - SaltStack 禁用本地 Windows 管理员(如果已启用)
问题描述
如果启用了内置的 Windows 本地管理员帐户,我想禁用它。
由于salt.state.user.present不支持禁用帐户,我正在使用salt.modules.win_useradd.update。但是,即使该帐户已被禁用,它也会禁用该帐户。
我不能使用unless
或者onlyif
因为它们只使用从 shell 命令解析的结果。
有没有办法使用salt.module.win_useradd.info的返回数据“更改”字典中的布尔值作为要求[user.info][account_disabled]
?
我想做类似以下的事情:
builtin_administrator:
module.run:
- user.info:
- name: Administrator
disable_builtin_administrator:
module.run:
- user.update:
- name: Administrator
- account_disabled: true
- require:
- module: builtin_administrator
- require:
- module: builtin_administrator['changes']['user.info']['account_disabled']['false']
您可以在输出中看到来自win_useradd.info的结果数据更改字典:
local:
----------
ID: builtin_administrator
Function: module.run
Result: True
Comment: user.info: Built-in account for administering the computer/domain
Started: 15:59:56.440000
Duration: 15.0 ms
Changes:
----------
user.info:
----------
account_disabled:
True
account_locked:
False
active:
False
comment:
Built-in account for administering the computer/domain
description:
Built-in account for administering the computer/domain
disallow_change_password:
False
expiration_date:
2106-02-07 01:28:15
expired:
False
failed_logon_attempts:
0L
fullname:
gid:
groups:
- Administrators
home:
None
homedrive:
last_logon:
Never
logonscript:
name:
Administrator
passwd:
None
password_changed:
2019-10-09 09:22:00
password_never_expires:
True
profile:
None
successful_logon_attempts:
0L
uid:
S-1-5-21-3258603230-662395079-3947342588-500
----------
ID: disable_builtin_administrator
Function: module.run
Result: False
Comment: The following requisites were not found:
require:
module: builtin_administrator['changes']['user.info']['account_disabled']['false']
Started: 15:59:56.455000
Duration: 0.0 ms
Changes:
Summary for local
------------
Succeeded: 1 (changed=1)
Failed: 1
------------
Total states run: 2
Total run time: 15.000 ms
我正在使用 Windows 10 1903 masterless salt-minion 2019.2.1 (Fluorine) 进行测试,我在 minion配置文件中use_superseded
为module.run设置。
提前致谢!
解决方案
我解决了这个问题:
localuser.disable.administrator:
cmd.run:
- name: "Get-LocalUser Administrator | Disable-LocalUser"
- shell: powershell
- onlyif: powershell -command "if ((Get-LocalUser | Where-Object {($_.Name -eq 'Administrator') -and ($_.Enabled -eq $true)}) -eq $null) {exit 1}"
推荐阅读
- python - 与训练集损失不同,开发集的损失总是在增加
- c++ - 如何防止在省略号中使用对象
- angular - 我们如何在 app.module 和 SSR 渲染中检查 isPlatformBrowser(this.platformId)
- floating-point - 从浮点和中获取小数部分
- math - 如何计算 sympy 向量中的标量积?
- python - 使用 PyOpenGl 的 eglInitialize() 出错(错误 = 12296)
- python - ModuleNotFoundError:没有名为“django”的模块,具有虚拟环境 Python3.8
- linux - 如何从文件中读取变量,修改并将其保护到其他变量
- node.js - MongoError:不允许用户在 [test.users] 上执行操作 [find]
- mysql - 对超过百万行进行排序的分组