Я наконец-то заставил этот скрипт 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-адреса найдет последнего пользователя, вошедшего в систему) только в том случае, если он работает как учетная запись службы. Это означает, что при тестировании сценария я могу выбрать «Запуск от имени» и ввести учетные данные учетной записи службы.
Сторонняя программа не запускается с использованием учетных данных службы, что означает, что я должен делать это на стороне программы.
Как заставить эту программу запускаться как сервисная учетная запись автоматически? Как бы я жестко запрограммировал это? И имя пользователя и пароль должны быть зашифрованы.
Можете ли вы указать мне правильное направление?
EDIT: я читаю эту ссылку, http://blogs.technet.com/b/robcost/archive/2008/05/01/powershell-tip-storing-and-использование-пароля-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
Но я все еще пытаюсь понять, как запустить скрипт, используя эти учетные данные.