2012-10-07 3 views
1

방금 ​​powershell로 시작했습니다. 그리고 내 서버를 모니터하는 스크립트를 만들었습니다. 그러나 내 서버에서 하드 디스크 및 RAID 구성을 모니터링해야합니다. 이 작업은 HP의 소프트웨어에서만 수행 할 수 있습니다.Powershell 외부 프로그램으로 변수

그래서 내가 원하는 것 :
나는 어레이와 디스크를 모니터하는 데 사용할 수있는 HP의 명령 행 유틸리티를 가지고있다. 나는이 유틸리티를 시작할 때 는,이 얻을 :

PS C:\Program Files (x86)\Compaq\Hpacucli\Bin> .\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box 0:bay 1, 750 GB)" show status | out-host 
physicaldrive 1I:0:1 (port 1I:box 0:bay 1, 750 GB): OK 

난 그냥 변수로이 출력 내 스크립트에 더를 사용하고 싶습니다.

어떻게 수행 할 수 있습니까?

내가 시도 :

$disk1 = "c:\program files (x86)\Compaq\hpacucli\bin\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box 0:bay 1, 750 GB)" show status | out-host" 

하지만이 그래서 난 그냥 변수로 physicaldrive 1I:0:1 (port 1I:box 0:bay 1, 750 GB): OK을 갖고 싶어

작동되지 않았습니다.

누군가가 나를 도울 수 있기를 바랍니다. 그래서 저는 PowerShell을 더 많이 사용하는 법을 배울 수 있습니다.

감사합니다. 이 EXE 파일의 출력 예를 소모 그대로 데니스

답변

3

out-host cmdlet을 제거하십시오 : PowerShell로

$disk1 = .\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box 0:bay 1, 750 GB)" show status 

, 언제 당신이 파이프 라인을 호출하고 출력이 염두에 두어야을, 그것은 출력로 이동합니다 (위에서와 같이) 변수에 의해 캡쳐되거나 출력이 캡처되지 않으면 화면에 표시 될 수있는 스트림. Out-Host으로 파이프하면 정상 출력을 무시하고 "직접"입력을 화면에 표시합니다. 그렇기 때문에 데이터를 변수로 캡처 할 수 없습니다.

함수에서 변수로 캡처되지 않거나 $ null로 리디렉션 된 출력을 생성하는 모든 문은 해당 함수에 대한 출력을 생성하기 때문에 이것은 일반적인 언어와 약간 다릅니다. PowerShell 사용자가 처음 예상 한 것보다 많은 기능을 반환 할 경우 처음에는 많은 놀라움을 금할 수 있습니다. 자세한 내용은 accepted answer to this SO question을보십시오.

+0

나는 아직도 그것을 이해할 수 없다. –

+0

그냥 제대로 이해하는 방법을 모르겠다. 내가 입력 할 때 : $ disk1 =. \ hpacucli.exe 컨트롤러 슬롯 = 3 physicaldrive "1I : 0 : 1 (포트 1I : 상자 0 : 베이 1, 750GB)"상태를 표시 한 다음 $ disk1을 입력하십시오. 나는 디스크 상태가 아니라 $ disk1 = .hpacucli.exe 컨트롤러 슬롯 = 3 physicaldrive "1I : 0 : 1 (포트 1I : 상자 0 : 베이 1, 750GB)"상태를 표시합니다. 결과는 입니다. 누군가 내 뜻을 이해하기를 바랍니다. 다시 말하지만, 나는 완전히 powershell에 익숙하다. (그리고 일반적으로 스크립팅하기) –

+0

미안하지만, 나는 다시 시도했다. –