2014-12-03 3 views
0

IE 버전을 구하는 데 필요한 기계 목록이 많습니다.Powershell 컴퓨터 목록의 버전 확인

현재 원격 레지스트리를 통해 연결하고 텍스트 파일에 값을 쓰는 것만으로도 쉼표로 구분하여 예쁜 Excel보기를 만들 수 있습니다.

이 컴퓨터 목록에는 Windows가 아닌 일부 서버 및 사용되지 않는 컴퓨터가 있습니다. Windows가 아니라면 IE 검사를 건너 뛰고 싶지만 실패를 다음 컴퓨터로 에코하고 싶습니다.

이것은 현재 내가하고있는 일이지만 제대로 완료되었는지는 잘 모르겠습니다. 비 Windows 용 IE 버전을 계속 확인하면서 오류를 작성합니다.

$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

스크립트가 좋아 보인다 (참고, IE6-8는 IF 중복 거기에 이유가 버전에 대해 다른 레지스트리 키가),하지만 당신은 첫 번째 검사에서 -ComputerName 매개 변수를 누락 :

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

{ 
+0

Doh! 더블 엑스. 방금 약간 다른 작업을 수행했지만,이 수정 작업으로 스크립트가 작동 할 것이라는 사실을 알았습니다. –

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} 
}