Powershell - invoke-command - if reg exists

izkcnapc  于 2023-05-07  发布在  Shell
关注(0)|答案(1)|浏览(126)

我已经写了脚本,但结果是相同的所有计算机.更准确地说,如果我的设备有注册表名称,然后都有它并不反映现实.如果我的设备也有它.我需要帮助来理解我的错误。先谢谢你了

$ADSearchBaseComputers = 'ou=computers,ou=xxx,ou=xx,ou=xxx,dc=xx,dc=xxx,dc=xxx'
$computers= get-adcomputer -filter * -searchbase "$ADSearchBaseComputers" | select -Property SamAccountName

foreach ($computer in $computers)
    {
        
        Invoke-Command {    
                            $RegPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
                            $RegName= Get-ItemProperty -Path $RegPath -Name MTBLogin 

                            
                            if  ($RegName)
                             {
                             Write-Output "Reg Key presente pour $($computer.SamAccountName)"
                             
                             }

                            else
                            {
                            Write-Output "Reg Key non presente pour $($computer.SamAccountName)"
                            }
                       }
    
    }

最初我在循环之前有$RegPath$RegName值,所以我把它们移到里面,但结果是一样的。

zzoitvuj

zzoitvuj1#

我会这么做给invoke-command整个计算机名数组将使其并行运行。如果你返回一个对象,你会自动得到pscomputername。它应该给予一个结果,无论注册表项是否存在。

$ADSearchBaseComputers = 'ou=computers,ou=xxx,ou=xx,ou=xxx,dc=xx,dc=xxx,dc=xxx'
$computers= get-adcomputer -filter * -searchbase $ADSearchBaseComputers |
  select -ExpandProperty Name
Invoke-Command $computers {    
  $RegPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
  $RegName = Get-ItemProperty -Path $RegPath -Name MTBLogin
  [pscustomobject]@{RegName = [boolean]$RegName}
}

RegName PSComputerName RunspaceId
------- -------------- ----------
   True COMP001        d4124bfd-f3d1-4af0-b065-1607627f224a
   True COMP002        d4124bfd-f3d1-4af0-b065-1607627f224b
  False COMP003        d4124bfd-f3d1-4af0-b065-1607627f224c

相关问题