我正在使用Powershell v2这是我的脚本
param([string]$Sender_IP=$(throw " Sender's IP is required."))
$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[1].UserName
$UserID
代码工作的唯一时间是我传入当前服务器的IP地址。
我使用管理员凭据登录此服务器,我甚至选择了Run-As Administrator来运行PowerShell。
为什么在使用我可以ping并具有管理访问权限的其他IP地址时会出现以下错误:
Get-EventLog : Attempted to perform an unauthorized operation.
At script_path_and_name.ps1:5 char:13
+ Get-EventLog <<<< "Security" -computername $Sender_IP `
+ CategoryInfo : NotSpecified: (:) [Get-EventLog], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetEventLogCommand
@Adi Inbar
远程注册表服务正在运行,防火墙已关闭。但它没有用。
当我尝试使用服务帐户运行时,它也无法运行。
但奇怪的是,当我使用服务帐户运行,并输入我自己的IP地址时,我收到错误,
Get-EventLog : Requested registry access is not allowed.
答案 0 :(得分:0)
(我还没有足够的声誉发表评论......)
当您运行它时,计算机上的服务帐户是否提升了Powershell提示符?
在我的计算机上以非提升的提示运行Powershell时,我收到了该错误(不允许注册表访问)。
您知道远程计算机上的执行策略是什么吗?我不确定它是否重要,因为cmdlet会自行调整,但它可能值得检查。
另外,仅仅是一个FYI:
无论如何,管道是一个自然的换行符,你不需要反引号(只是不要在管道后留下任何空格)。
例如:
cmdlet1 |
cmdlet2 |
cmdlet 3