0

皆さんの助けを借りて、ついにこの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] を選択してサービス アカウント資格情報を入力できることを意味します。

サードパーティ プログラムはサービス資格情報を使用して実行されないため、プログラム側で実行する必要があります。

このプログラムをサービス アカウントとして自動的に実行する方法は? これをハードコードするにはどうすればよいですか?また、ユーザー名とパスワードは暗号化する必要があります。

正しい方向に私を向けることができますか?

編集:私はこのリンクを読んでいます

そして、暗号化されたパスワードをファイルに送り込む方法を示しています

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

しかし、これらの資格情報を使用してスクリプトを実行する方法をまだ見つけようとしています

4

1 に答える 1

0

重要なポイント (別の資格情報を使用するポイント) は Get-EventLog コマンドレットだと思います。このコマンドレットは -Credential をサポートしていませんが、代わりに Get-WinEvent を使用できます。これは、おそらく where フィルターを変更する必要があることを意味します。フィルターの一部 (すべて?) を Get-WinEvent コマンドレットに移動することもお勧めします。

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

ところで: convertTo/From-SecureString を使用して資格情報を保存する場合、それらは操作を実行しているアカウントに対してのみ機能します (したがって、サード パーティのツールが別の資格情報で実行されている場合、作成した資格情報を処理することはできません)。

于 2013-08-09T07:40:26.070 に答える