我一直在研究一个脚本,该脚本将根据我的组织检查PC /服务器的特定信息。我是根据从网络和此站点发现,修改,修改和组成的代码创建此代码的。
它将读取CSV文件并查找要比较的变量。最初,它会使用带有颜色的 Write-Host 输出到屏幕,并且效果很好。 IF 的第一个是如果注册表匹配期望值,它将变为绿色。否则 Else (其他)会将输出线变为红色。但是,现在我想将其发送给Doug Finke进行归档的Powershell Excel Module。
CSV 文件具有四个字段,这些字段描述了我要查找的内容,要检查的注册表配置单元,键,值和我想要读取的内容。
当我导出数据时,数据现在分成不同的行,并且在打印变量时很难读取。
我现在宁愿从函数中获取变量作为Global,但是我也没有运气。我已经阅读了无数示例,甚至在这里也有一些示例,但是并没有设法在我可以使用或操作的地方获取数据。
Function Check-Reg-Values(){
foreach ($RegLine in $RegCSV){
$array =@()
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($RegLine.Hive, $server)
$key = $reg.OpenSubkey($RegLine.RegKey)
If ($key){
$value = $key.GetValue($RegLine.RegValue)
$array += $value
#Write-output $array -BackgroundColor Yellow -ForegroundColor Black
If ($array -eq $RegLine.WhatShouldBe){
Write-Output "Registry =" + $RegLine.RegKey +"="+ $array + $RegLine.WhatShouldBe
}
Else
{
Write-Output "Registry =" + $RegLine.RegKey +' ='+ $array + $RegLine.WhatShouldBe
}
}
Else
{
Write-Output 'Registry Key ' $RegLine.RegKey 'does not exist'
}
}
}
请提供一些指导,以操纵数据以使数据可用,或排除全局变量,甚至更好地兼顾两者。
下面的示例输出。您会注意到“ +”号,我已经尝试了很多不同的方法来使它看起来正确。
Registry =
+
Control Panel\Accessibility\ToggleKeys
+ =+
62
+
58
Registry =
+
SOFTWARE\Wow6432Node\Symantec\Symantec Endpoint Protection\SMC
+ =+
0
+
1
Registry =
+
SOFTWARE\Policies\Microsoft\Internet Explorer\Main
+ =+
1
+
0
Registry =
+
SOFTWARE\Altiris\Altiris Agent
+=+
1
+
1
我感谢在此提供的任何帮助,并且保证在阅读本文之前,我会读很多书。