2013-08-08 4 views
0

마침내이 모든 powershell 스크립트를 사용하여 모든 도움을 받으십시오. !!!! Powershell에서 하드 코드로 암호화 된 자격 증명을 입력하십시오.

$line_array = @() 
$multi_array = @() 
[hashtable]$my_hash = @{} 

foreach ($i in $args){ 
    $line_array+= $i.split(" ") 
} 

foreach ($j in $line_array){ 
    $multi_array += ,@($j.split("=")) 
} 

foreach ($k in $multi_array){ 
    $my_hash.add($k[0],$k[1]) 
} 

$Sender_IP = $my_hash.Get_Item("sender-ip") 

$eventList = @() 
Get-EventLog "Security" -computername $Sender_IP ` 
    | Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} ` 
    | Select-Object -First 2 ` 
    | foreach-Object { 
     $row = "" | Select UserName, LoginTime 
     $row.UserName = $_.ReplacementStrings[5] 
     $row.LoginTime = $_.TimeGenerated 
     $eventList += $row 
     } 
$userId = $eventList[0].UserName 
$userId 

.\FOO.ps1 sender-ip=10.2.23.40 sender-name=joe sender-id=djoe 

으로 호출 할 수 있지만 지금은 그것을 호출이 타사 프로그램에 대한 준비를해야합니다. 스크립트는 서비스 계정으로 실행되는 경우에만 출력을 생성합니다 (즉, 주어진 IP 주소에 대해 마지막 사용자가 로그온 한 것을 찾습니다). 즉, 스크립트를 테스트 할 때 'Run-As'를 선택하고 서비스 계정 자격 증명을 입력 할 수 있습니다.

타사 프로그램은 서비스 자격 증명을 사용하여 실행되지 않으므로 프로그램 측에서해야합니다.

이 프로그램을 서비스 계정으로 자동 실행하는 방법은 무엇입니까? 어떻게 이것을 하드 코드합니까? 사용자 이름과 암호는 암호화되어야합니다.

올바른 방향으로 나를 가리킬 수 있습니까?

편집 : 나는 http://blogs.technet.com/b/robcost/archive/2008/05/01/powershell-tip-storing-and-using-password-credentials.aspx

이 링크를 읽고있다 그리고 그것은

PS C:\> read-host -assecurestring | convertfrom-securestring | out-file C:\cred.txt 

그리고 파일에 암호화 된 암호 펌프 스크립트에 그것을 돌려 보내야하는 방법을 보여줍니다

PS C:\> $password = get-content C:\cred.txt | convertto-securestring 

자격 증명 개체를 생성하십시오.

PS C:\> $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "myusername",$password 

하지만 난 아직도 내가 그 중요한 점을 생각할 겁니다 이러한 자격 증명

답변

0

를 사용하여 스크립트를 실행하는 방법 (당신은 대체 자격 증명을 사용하여 포인트를) 알아 내려고 노력하고 있어요 얻을-EventLog 구성 cmdlet입니다. 이 cmdlet은 -Credential을 지원하지 않지만 대신 Get-WinEvent를 사용할 수 있습니다. 필터를 변경해야 할 수도 있습니다. BTW

Get-WinEvent -FilterHashtable @{ 
    ID = 4624 
    LogName = 'Security' 
} -ComputerName $Sender_IP -Credential $Credential 

: 나는 cmdlet을-WinEvent가의 가져 오기를 (? 모두) 필터의 일부를 이동 또한 제안 사용 자격 증명을를 ConvertTo /에서-SecureString 그들은 단지 작업을 수행하는 계정에 대해 작동합니다 (저장하는 경우 따라서 타사 도구가 다른 자격 증명으로 실행되는 경우 제작 한 자격 증명을 처리 할 수 ​​없습니다.