0

我正在尝试锁定使用 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-WMIObjectcmdlet,它允许您通过使用该.put()方法保存属性来设置属性。

Get-WmiObject -Class Win32_UserAccount -ComputerName ComputerOne -Filter "Name='AdminAccount'" | 
    ForEach-Object -Process {
        $_.Lockout = $true;
        $_.put()
    }

只是想完全切换到较新的 CIM cmdlet

4

0 回答 0