为什么在 PowerShell 中,调用 wmic 修改用户账户会提示“此级别的开关异常。”,但命令提示符不会?

2023-02-10 14:01:28 +08:00
 fairyStage
目标:将名为 local-user 的本地用户账户设定为密码永不过期。



使用 PowerShell:
Windows PowerShell
版权所有 (C) Microsoft Corporation 。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS C:\Windows\system32> WMIC USERACCOUNT WHERE Name='local-user' SET PasswordExpires=FALSE
此级别的开关异常。



使用命令提示符 :
Microsoft Windows [版本 10.0.19044.2364]
(c) Microsoft Corporation 。保留所有权利。

C:\Windows\system32>WMIC USERACCOUNT WHERE Name='local-user' SET PasswordExpires=FALSE
正在更新“\\TESETR-VM\ROOT\CIMV2:Win32_UserAccount.Domain="TESETR-VM",Name="local-user"”的属性
属性更新成功。


楼主已尝试过 Google 搜索 “unexpected switch at this level” (英文版的“此级别的开关异常”),但没有找到任何有价值的结果,看起来很多遇到“此级别的开关异常”错误的人都只是不慎输错了命令。
1419 次点击
所在节点    Windows
3 条回复
fairyStage
2023-02-10 14:15:27 +08:00
自答:
换了一种搜索思路,搜索“powershell wmic”。
发现这是微软故意设置的障碍。
微软正筹备在未来的 Windows 中彻底删除 WMIC ,以消除 WMIC 带来的安全风险。

来源:
https://stackoverflow.com/questions/47934164/how-to-create-wmic-powershell-script

https://www.bleepingcomputer.com/news/microsoft/microsoft-starts-killing-off-wmic-in-windows-will-thwart-attacks/#:~:text=Microsoft%20is%20moving%20forward%20with,to%20the%20Windows%20Management%20Instrumentation
fairyStage
2023-02-10 14:23:56 +08:00
那么应该怎么用脚本设置密码永不过期呢?

场景一:又不是不能用 WMIC
wmic useraccount where "Name='[Username]'" set PasswordExpires=false

场景二:我们已经准备好拥抱 PowerShell 了!
Set-LocalUser -Name "[Username]" -PasswordNeverExpires 1

场景三:现在是 203X 年,WMIC 真的消失了,难道就没有别的办法让我继续用 cmd 吗?
有办法,但现在不能修改单个用户账户的设置了。
执行下面的命令,则所有本地用户账户的密码均永不过期。
net accounts /maxpwage:unlimited
thinkershare
2023-02-10 14:35:02 +08:00
12 年左右就不用 CMD 了,都是 powershell 一把梭。现在用 powershell 7, Windows 自带的 Powershell 我都删掉。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/914894

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX