Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测方法-powershell-注册表_Powershell - Fatal编程技术网

检测方法-powershell-注册表

检测方法-powershell-注册表,powershell,Powershell,我正在研究如何在SCCM中创建检测方法。我一直在使用下面有效的方法。但我需要更多的钱 if(test-path -path <regpath>) { Write-Host "installed" } else { } if(测试路径-路径) { 写入主机“已安装” } 其他的 { } 我希望使用where-Name DisplayVersion-eq“7.7.1”作为检测方法。非常感谢您的帮助。以下是一个示例: if ((get-itemproperty hkcu:\key

我正在研究如何在SCCM中创建检测方法。我一直在使用下面有效的方法。但我需要更多的钱

if(test-path -path <regpath>)


{
Write-Host "installed"
}

else
{
}
if(测试路径-路径)
{
写入主机“已安装”
}
其他的
{
}
我希望使用where-Name DisplayVersion-eq“7.7.1”作为检测方法。非常感谢您的帮助。

以下是一个示例:

if ((get-itemproperty hkcu:\key1 name1).name1 -eq 'value1') { 
  'yes' 
}
下面是一个例子:

if ((get-itemproperty hkcu:\key1 name1).name1 -eq 'value1') { 
  'yes' 
}
即使在较旧版本的PowerShell中也能正常工作,但它需要复制值名

在PowerShell v5或更高版本中可以使用
Get-ItemPropertyValue
cmdlet
,以避免重复:

$key = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\xxx'
$valueName = 'DisplayVersion' # in PS terminology: *property* name 
$valueData = '7.7.1' # in PS terminology: *property value*

if ((Get-ItemPropertyValue $key $valueName) -eq $valueData) {
  "installed"
} else {
  "NOT installed"
}

相反,如果您在给定注册表项路径的所有子项中查找给定属性(注册表值)中的特定属性值(注册表值数据):

$key = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
$valueName = 'DisplayVersion'
$valueData = '7.7.1'

if (Get-ChildItem $key | Where { $_.GetValue($valueName) -eq $valueData }) {
  "installed"
} else {
  "NOT installed"
}
即使在较旧版本的PowerShell中也能正常工作,但它需要复制值名

在PowerShell v5或更高版本中可以使用
Get-ItemPropertyValue
cmdlet
,以避免重复:

$key = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\xxx'
$valueName = 'DisplayVersion' # in PS terminology: *property* name 
$valueData = '7.7.1' # in PS terminology: *property value*

if ((Get-ItemPropertyValue $key $valueName) -eq $valueData) {
  "installed"
} else {
  "NOT installed"
}

相反,如果您在给定注册表项路径的所有子项中查找给定属性(注册表值)中的特定属性值(注册表值数据):

$key = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
$valueName = 'DisplayVersion'
$valueData = '7.7.1'

if (Get-ChildItem $key | Where { $_.GetValue($valueName) -eq $valueData }) {
  "installed"
} else {
  "NOT installed"
}

您必须使用
get itemproperty
。我是,但我不知道如何使用displayversion的值来表示“xxxx”。Get-ItemProperty-路径“HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\xxxx”|选择displayversion您必须使用
Get-ItemProperty
。我是,但我不知道如何使用displayversion的“xxxx”值。获取ItemProperty-路径“HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\xxxx”|选择DisplayVersionTank you。因此,首先预定义变量更容易理解我想要做什么/寻找什么。谢谢。因此,首先预定义变量更容易理解我想要做什么/寻找什么。