2014-12-03 26 views
0

有大量我需要获取IE版本的机器。Powershell检查版本的计算机列表

目前只是通过远程注册表连接并将值写入文本文件,逗号分隔为漂亮的Excel视图。

在这个机器列表中,有些服务器和不是Windows的过时机器。我希望能够跳过IE检查,如果不是Windows,但回显失败,然后到下一台机器。

这是目前我正在做的,但我不太确定它是否正确完成。它仍在检查非Windows的IE版本,而不是写入失败。

(注意,IE6-8有版本不同的注册表键,这就是为什么有冗余IF)

$computernames = Get-Content C:\ps\servers.txt 

echo "Server,Status,IE Version;" >> C:\ps\result.txt 


foreach ($server in $computernames) { 

if (!(Get-Service "Windows Audio" -ErrorAction SilentlyContinue)) 

{ 

$failure = $server + ",Failure,;" 
echo $failure >> C:\ps\result.txt 

} 

else 

{ 

Get-Service -ComputerName $server -Name RemoteRegistry |Start-Service 



$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $server) 

$IEkey = $reg.OpenSubkey('SOFTWARE\Microsoft\Internet Explorer\') 

If (!$IEKEY) 
    { 
    $IEVALUE = '0' 
    } 
if ($IEKEY) 
    { 

    $IEvalue = $IEkey.GetValue('svcVersion') 
     IF (!$IEVALUE) 
     { 
     $IEvalue = $IEkey.GetValue('Version') 
     } 
    } 


$result = $server + ",Success," + $IEvalue + ";" 

echo $result >> C:\ps\result.txt 

}} 

回答

0

你的脚本看起来不错,但你缺少你首先检查-ComputerName参数:

if (!(Get-Service "Windows Audio" -ComputerName $server -ErrorAction SilentlyContinue)) 

{ 
+0

Doh! X_X。虽然我只是做了一些不同的事情,但我敢打赌,这种改正也会使我的剧本奏效。 – 2014-12-03 21:49:09

0

实际上最终这样做有点不同。

似乎按预期工作,张贴在任何人想要做同样的事情。

$computernames = Get-Content C:\ps\servers.txt 

echo "Server,Status,IE Version;" >> C:\ps\result.txt 


foreach ($server in $computernames) { 

Get-Service -ComputerName $server -Name RemoteRegistry -ErrorVariable ERRORFLAG |Start-Service 

IF (!$ERRORFLAG) { 

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $server) 

$IEkey = $reg.OpenSubkey('SOFTWARE\Microsoft\Internet Explorer\') 

If (!$IEKEY) 
    { 
    $IEVALUE = '0' 
    } 
if ($IEKEY) 
    { 

    $IEvalue = $IEkey.GetValue('svcVersion') 
     IF (!$IEVALUE) 
     { 
     $IEvalue = $IEkey.GetValue('Version') 
     } 
    } 


$result = $server + ",Success," + $IEvalue + ";" 

echo $result >> C:\ps\result.txt 
} 
ELSE { 
$failure = $server + ",Failure,;" 
echo $failure >> C:\ps\result.txt} 
} 
相关问题