我正在尝试锁定使用 CIM 会话连接到的远程计算机上的本地管理员帐户:
$CIMSession = New-CimSession -ComputerName ComputerOne -ErrorAction Stop
$adminCheck = Get-CimInstance -Query "SELECT * FROM Win32_UserAccount WHERE Name='AdminAccount'" -CimSession $CIMSession
当我枚举该对象可用的所有可用 CIM 类方法时,只显示一个:
PS C:\windows\system32> $adminCheck.CimClass.CimClassMethods
Name ReturnType Parameters Qualifiers
---- ---------- ---------- ----------
Rename UInt32 {Name} {Implemented, MappingStrings}
...数字这是由于某些方法没有完全显示,也许?所以我尝试使用Invoke-CimMethod
.
$adminCheck | Invoke-CimMethod -MethodName Put -Arguments Lockout,$true
- 这不起作用,我认为它在语法上是不正确的,因为它也会出错。
试过:$adminCheck.LockOut = $true
,只是尝试一些东西,毫不奇怪它也不起作用。这是有道理的,因为该实例只是在我的计算机上引用。
所以,在我最后一次尝试中,我尝试了:
$adminCheck | Set-CimInstance -Property @{Lockout=$true}
# and
$adminCheck | Set-CimInstance -Property @{Lockout=$true} -CimSession $CIMSession
这也不起作用。
问题: 是否没有方法可以保存该 CIM 实例属性的新修改值?
我基于较旧的Get-WMIObject
cmdlet,它允许您通过使用该.put()
方法保存属性来设置属性。
Get-WmiObject -Class Win32_UserAccount -ComputerName ComputerOne -Filter "Name='AdminAccount'" |
ForEach-Object -Process {
$_.Lockout = $true;
$_.put()
}
只是想完全切换到较新的 CIM cmdlet