在 PowerShell 中如何将多个值加载到变量中?

问题描述 投票:0回答:2

我在工作中需要检查多个注册表项值,并且我想使用 PowerShell 自动执行此过程。我检查的注册表项之一有 3 个值,但我无法使用 PowerShell 脚本成功检查它。

我不相信我正确加载了

$value
变量,以便可以将其与
$path
的值进行比较。

$path = (Get-ItemProperty HKLM:\System\CurrentControlSet\Services\LanManServer).NullSessionPipe

$value = “netlogon samr lsarpc”

if ($path -ne $value) {
    Write-Host “Value is incorrect or missing.”
} else {
    Write–Host “Config is correct.”
}

我期望输出是

配置正确。

相反我得到了

值不正确或缺失。

使用 Regedit 我可以看到该键具有正确的值。

string powershell variables
2个回答
0
投票

NullSessionPipe
显然是一个REG_MULTI_SZ,这意味着数据作为字符串数组返回。您可以执行
"$path" -ne $value
将数组打乱为扁平字符串,但这意味着两个字符串中子字符串的顺序是相同的。更好的方法是通过
Compare-Object
来比较数组。

$path  = (Get-ItemProperty HKLM:\...).NullSessionPipe
$value = 'netlogon', 'samr', 'lsarpc'

if (Compare-Object $path $value) {
    'arrays differ'
} else {
    'arrays are equal'
}

0
投票

@Ansgar,经过一些实验,我能够使脚本正常工作。我删除了空格,并在netlogon和samr后面添加了回车符。效果完美!!!

$path = (Get-ItemProperty HKLM:\System\CurrentControlSet\Services\LanManServer).NullSessionPipe

$value = 'netlogon',
'萨姆尔',
'lsarpc'

if (比较对象 $path $value) { '数组不同' } 别的 { '数组是相等的' }

© www.soinside.com 2019 - 2024. All rights reserved.