2

我正在使用 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.
4

1 回答 1

1

当您将其作为计算机上的服务帐户运行时,Powershell 提示是否提升?

在我的机器上以非提升提示符运行 Powershell 时出现该错误(不允许访问注册表)。

你知道远程机器上的执行策略是什么吗?我不确定它是否重要,因为 cmdlet 远程本身,但它可能值得检查。

另外,仅供参考:

无论如何,管道是一个自然的换行符,你不需要反引号(只是不要在管道后面留下任何空格)。

例如:

cmdlet1 |
 cmdlet2 |
  cmdlet 3
于 2013-08-19T14:38:32.087 回答