Powershell v2 Get-Eventlog: попытка выполнить несанкционированную операцию
Я использую 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.
Почему я получаю следующую ошибку при использовании других 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.
1 ответ
(У меня пока недостаточно репутации, чтобы комментировать...)
Когда вы запускаете его как служебную учетную запись на вашем компьютере, повышается ли приглашение Powershell?
Я получал эту ошибку (доступ к реестру не разрешен) при запуске Powershell в приглашении без повышенных прав на моем компьютере.
Знаете ли вы, что такое политика выполнения на удаленных машинах? Я не уверен, имеет ли это значение, так как командлет удален сам, но, возможно, стоит проверить.
Также, к вашему сведению:
Труба в любом случае является естественным разрывом линии, вам не нужны обратные черты (просто не оставляйте пробелов после трубы).
Например:
cmdlet1 |
cmdlet2 |
cmdlet 3