2016-10-21 2 views
0

전자 메일을 통해 전송되는 허용 가능한/읽을 수있는 형식의 변수 결과를 캡처하는 데 문제가 있습니다. Powershell Email 본문 변수

다음

$body = Search-ADAccount -UsersOnly -AccountExpired -SearchBase 'OU=Test1,OU=TEST,OU=Accounts,DC=home,DC=ac,DC=uk' | select SamAccountName, DistinguishedName, AccountExpirationDate 

$emailto = '[email protected]' 
$emailfrom = '[email protected]' 
$emailserver = '127.0.0.1' 

Send-MailMessage -To $emailto -From $emailfrom -Subject 'Expired Accounts' -Body $body -SmtpServer $emailserver 

$ 바디 변수 출력은 내가 전자 메일 본문에 표시 할 정확히, 내가 사용하는 스크립트입니다.

SamAccountName DistinguishedName AccountExpirationDate -------------- ----------------- --------- ------------ jumartin CN = 사용자 1, OU = test1, OU = 테스트, OU = 계정, DC = 집, DC = ac, DC = 영국 19/10/2016 00:00 : 00
ricohvalue CN = 사용자 두, OU는 = TEST1, OU = TEST, OU = 계정, DC = 집, DC는 = AC, DC는 = 영국 2016년 2월 9일 0시 0분 0초

그러나 만료 된 사용자가 둘 이상이고 만료 된 사용자가있는 경우 다음 형식으로 나오는 것보다 전자 메일이 비어 있습니다. -

@ {SamAccountName = userone; DistinguishedName = CN = 사용자 1, OU = test1, OU = 테스트, OU = 계정, DC = 집, DC = ac, DC = uk; AccountExpirationDate = 10/2,016분의 19 0시 0분 0초}

내가 찾고 있어요 모든 이메일의 본문에 줄 형식으로 멋진 라인의 SAMAccountName을, distinguishedName을하고 AccountExpirationDate입니다.

내가 이메일 내에서 화면에 보이는 것을 캡처하는 방법을 모르겠다. 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있어요.

답변

0

테스트 할 Search-ADAccount가 없지만. cmdlet이 배열에 여러 사용자를 반환 할 때 퀘스트에서 유사한 GET-QADUser를 사용하는 것은 나에게 다음과 같은 오류를 제공합니다 :

Send-MailMessage : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Body'. 

그래서 가장 당신이 몸에 퍼팅하는 문자열입니다 있는지 확인합니다.

Send-MailMessage -To $emailto -From $emailfrom -Subject 'Expired Accounts' -Body ($body | Out-String) -SmtpServer $emailserver 

표를 적절한 HTML로 변환하고 BodyAsHtml 매개 변수를 사용하십시오.

+0

Adamar : 훌륭합니다 ... 그것이되어야하는대로 작동합니다. 내 knowldge 들어, 내가 뭘 잘못했는지, 왜 내가 변수를 캡처 한 문자열을 이미 $ 시체를 Out-String 출력해야 ... 바라건대 내가 무엇을 놓치고 있었는지 이해할 수 있습니다. 다시 당신의 도움에 감사드립니다. – metho

+1

Search-ADAccount는 AD 개체를 반환합니다. '| select'는 선택된 속성을 가진 커스텀 객체로 오브젝트를 변환하며, 플랫 스트링으로는 사용하지 않습니다. '| Out-String'은 그렇다. 직접 확인하실 수 있습니다 :'$ body.GetType()'과'($ body | Out-String) .GetType()'을 비교하십시오. – whatever