UPDATEPowerShell的 - 上次登錄的用戶 - 相同的輸入,不同的輸出
@ HAL9256
你的答案真的讓我覺得!
我做了一些谷歌上搜索更多的,發現這個網站,該網站提供了另一種方法
到目前爲止,它的工作原理!
我遠程進入另一臺服務器運行powershell腳本,顯示最後登錄的用戶。
幾件事情
- 它只有當我在服務帳戶的上下文中運行一切正常,沒有 管理員
- 它需要幾分鐘的時間輸出
但是當我運行它在一個服務帳戶的contenxt中,我得到不同的輸出爲相同的輸入
$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
舉例來說,我調用的命令行的腳本
script.ps1 "sender-ip=10.10.10.10"
我第一次運行它,它輸出的用戶的窗口的登錄名
我第二次用相同的輸入運行同一個腳本,它輸出我用來運行powershell腳本的同一個服務帳戶
而當我嘗試使用相同的輸入運行相同的腳本時,我得到了相同服務帳戶的輸出。
~~~~~~~
接下來,我嘗試用另一個IP地址運行腳本
我第一次運行它的輸出窗口的登錄名
我第二次劇本運行該腳本,它輸出相同的服務帳戶從中PowerShell腳本運行
~~~~~~~
這似乎是一個patte RN。第一次運行的腳本,它返回正確的輸入,第二次運行,它返回服務帳戶。
這是怎麼發生的?
如何使腳本始終返回正確的輸出,無論它被調用多少次?
如何解決此問題?
@ HAL9256:哇,這是非常徹底的!讓我試試看,我會讓你知道它是如何工作的。謝謝。 – Glowie
很高興聽到你有東西在工作!樂意效勞! – HAL9256