powershell - 解锁锁定域用户的命令
问题描述
我一直在使用这些来列出我域中的锁定用户,并提示我输入 samaccountname 以解锁所需的用户:我用 3 个文件完成了它。
第一个是 ps1 列出所有这些
import-module activedirectory
search-adaccount -lockedout | select name, samaccountname, OU
第二个是另一个 ps1 文件:
$user = Read-Host "Enter user account (SAMACCOUNTNAME) to unlock or press ENTER to refresh list"
Search-ADAccount -LockedOut | Where {$_.samaccountname -eq $user} | Unlock-ADAccount
为了执行上述文件,我使用了一个 .bat 文件:
:loop
powershell.exe -ExecutionPolicy Bypass -File c:\ps\lockedlist.ps1
powershell.exe -ExecutionPolicy Bypass -File c:\ps\unlock.ps1
cls
goto loop
当我运行它时......它列出了所有锁定的用户,我可以复制粘贴每个 samaacount 名称来解锁它们
但问题是,当我想使用一个 ps1 文件时它不起作用。它只是要求 samaccountname 但它没有列出它
import-module activedirectory
search-adaccount -lockedout | select name, samaccountname, OU
$user = Read-Host "Enter user account (SAMACCOUNTNAME) to unlock or press ENTER to refresh list"
Search-ADAccount -LockedOut | Where {$_.samaccountname -eq $user} | Unlock-ADAccount
我知道 .bat 文件将是相同的...
感谢任何阅读和帮助的人。
解决方案
Powershell 总是尝试优化它为您提供的输出。因此,输出的顺序可能与您对脚本中的命令所期望的不同。如果可能的话,它将连接输出以提高可读性,尤其是当它是相同类型的对象时。要打破这一点,您可以使用格式 cmdlet,例如Format-Table
par 示例。
Search-ADAccount -LockedOut |
Select-Object -Property Name, sAMAccountName, DistinguishedName |
Format-Table
$user = Read-Host -Prompt 'Enter user account (SAMACCOUNTNAME) to unlock or press ENTER to refresh list'
Search-ADAccount -LockedOut |
Where-Object -FilterScript {$_.samaccountname -eq $user} |
Unlock-ADAccount
至少,它在我的环境中有效。顺便说一句:从 Powershell 版本 3 开始,您不再需要显式导入模块。它们将被自动导入。最好在脚本顶部使用#Requires语句。#Requires -Modules activedirectory
如果没有安装活动目录模块,这甚至会阻止脚本运行
推荐阅读
- r - 在 R 替代方案中使用嵌套循环
- python - 基于不规则时间列合并两个数据帧
- android - 如何永久缓存 Firebase 实时数据库数据?
- python-3.x - Python 2 -> Python 3 re.sub
- controller - 如何将控制器添加到我的自定义扩展?打字稿3 9.5
- docker - 是否可以从 yocto 生成的图像创建 docker 图像?
- python - 使用 Tensorflow 2 中保存的 TensorFlow Estimator 进行预测
- vue.js - 修复无限循环。Vue.js
- sql - Python SQL日期插入问题
- c++ - 子进程在通过 nodejs 生成的基于 Windows 的 docker 容器内意外退出