2012-01-25 2 views
3

동료와 회사 네트워크에있는 모든 컴퓨터 이름이 들어있는 CSV 파일을 사용하여 원격 레지스트리에 연결할 때 사용하는 powershell 스크립트를 만들려고합니다. 특정 값을 추출하십시오. powershell을 사용하여 여러 컴퓨터에서 레지스트리 값 추출

$strMachineName = import-csv .\computer_name.csv 
foreach ($line in $strMachineName) 
{ 
       $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $line.computer) 
       $regkey = $reg.OpenSubkey("SOFTWARE\\Olympus\\DSSPlayerPro\\Transcription Module\\UserInformation") 
       $serialkey = $regkey.GetValue("SerialNumber") 
       write-host $line","$serialkey 
} 

지금,이 스크립트는 잘 작동하지만 열심히 많은 컴퓨터와 함께 이해할 수 있도록 출력 문제가

:

이것은 우리가 지금까지 가지고있는 것입니다.

stdout을 csv 또는 txt와 같은 다른 파일로 출력 할 수 있기를 원하며 stderr을 null로 출력하거나 별도의 파일을 출력하여 나중에 검사 할 수 있기를 바랍니다.

내 연구 결과 변수를 사용할 때 파일에 출력 할 수 없으므로 write-host이 적절한 명령이 아니므로 (??) 에코를 사용하려고했지만 변수를 가져 오는 데 문제가 있습니다. 내가 원하는대로 일하게.

감사합니다. 아무쪼록 고맙습니다. 감사합니다.

답변

4

try/catch를 사용하여 예외를 catch해야합니다.

$strMachineName = import-csv .\computer_name.csv 
foreach ($line in $strMachineName) 
{ 
    try { 
     $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $line.computer) 
     $regkey = $reg.OpenSubkey("SOFTWARE\\Olympus\\DSSPlayerPro\\Transcription Module\\UserInformation") 
     $serialkey = $regkey.GetValue("SerialNumber") 

     ('"{0}","{1}"' -f $line.computer, $serialkey) | out-file C:\stdout.csv -append -encoding ascii 
    } catch { 
     ('"{0}","{1}"' -f $line.computer, $_) | out-file C:\stderr.csv -append -encoding ascii 
    } 
} 

이 두 파일 (stdout.csv과 stderr.csv)을 만듭니다. 성공적인 쿼리는 stdout.csv에 저장되고 실패한 쿼리는 stderr.csv에 저장됩니다.

+1

감사합니다. 내일 다시 시도하겠습니다. ** (' "{0}", "{1}"'-f ...) ** 부분에 대해 더 설명해 주시겠습니까? 첫 번째 변수를 0 대신 두 번째 변수를 1 대신 넣고 사이에 쉼표를 넣는 것 같습니다. 이 기술을 뭐라고 부릅니까? 나는 그것에 대한 나의 독서를하고 싶다. – smierdziel

+0

@smierdziel 당신이 자리하고 있습니다. 문자열 형식이라고합니다. 여기에 대한 좋은 [블로그 게시물] (http://devcentral.f5.com/weblogs/Joe/archive/2008/12/19/powershell-abcs---f-is-for-format-operator.aspx) 그것에 대해 . –

+0

@smierdziel 주 - catch 블록의'$ _ '는 예외를위한 객체가 될 것입니다. 파이프를'Get-Member'에 파이프하거나 PowerGUI로 디버깅하면 흥미로운 것을 찾을 수 있습니다. –

관련 문제