加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 检查注册表值是否等于1无法正常工作

发布时间:2020-12-13 20:29:37 所属栏目:Windows 来源:网络整理
导读:我已经将PowerShell的一些东西放在一起,以远程查询存储在.csv文件中的计算机列表,以获取注册表值.如果注册表项的值等于“1”,则脚本应使用计算机的名称作为文本文件的名称创建文本文件. 一切都很好.脚本运行愉快,没有任何错误.问题是,当我返回并远程检查目标
我已经将PowerShell的一些东西放在一起,以远程查询存储在.csv文件中的计算机列表,以获取注册表值.如果注册表项的值等于“1”,则脚本应使用计算机的名称作为文本文件的名称创建文本文件.

一切都很好.脚本运行愉快,没有任何错误.问题是,当我返回并远程检查目标注册表值时,我发现该值不是1.脚本只是为.csv中的每一行创建一个文件.

我究竟做错了什么?

编辑***我发现一个问题我在注册表路径的$key变量中输入了错误. 2013年7月17日2:21p

$File = Import-Csv 'c:tempmachines.csv'

foreach ($line in $file)
{
  $machinename = $line.machinename
  trap [Exception] {continue}
  $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$MachineName)
  $key = "SOFTWAREMicrosoftWindows NTCurrentVersionWinLogon"
  $regkey = ""
  $regkey = $reg.opensubkey($key)
  $keyValue = ""
  $keyValue = $regKey.GetValue('AutoAdminLogon')

  if ($keyValue = "1")
  {
    try
    {
      $textFile = New-Item -Path "c:tempautologin" -Name $MachineName -ItemType "File"
    }
    catch
    {
      $msg = $_
      $msg
    }
  }
  $Results = $MachineName,$keyValue
  Write-host $Results

  #Output Below Here:
}
在PowerShell中,=是赋值运算符,而不是比较运算符.改变这一行:
if ($keyValue = "1")

进入这个:

if ($keyValue -eq "1")

有关更多信息,请参阅Get-Help about_Operators.

你这么做太复杂了,BTW.这样的东西应该足够了:

$keyname = 'SOFTWAREMicrosoftWindows NTCurrentVersionWinLogon'

Import-Csv 'C:tempmachines.csv' | % {
  $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$_.machinename)
  $key = $reg.OpenSubkey($keyname)
  $value = $key.GetValue('AutoAdminLogon')
  if ($value -eq "1") {
    $filename = Join-Path "c:tempautologin" $_.machinename
    try {
      touch $filename
      $textFile = Get-Item $filename
    } catch {
      $_
    }
  }
  Write-Host ($_.machinename,$value)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读