Invoke-WmiMethod: доступ запрещен при отправке сообщения в экземпляры EC2 - PullRequest
0 голосов
/ 25 октября 2018

У меня есть сценарий PowerShell, который останавливает все запущенные экземпляры, я хочу добавить сообщение, всплывающее внутри экземпляра, чтобы уведомить пользователя о завершении работы экземпляра и, если возможно, принять или отклонить это.Это полный код (по правде знаю, только останавливается):

Get-EC2InstanceStatus | Out-File -filepath C:\Users\AGOJSO\Desktop\xd.txt
select-string -path "C:\Users\AGOJSO\Desktop\xd.txt" -Pattern 'i-.*$' | select line | out-file "C:\Users\AGOJSO\Desktop\xaxa.txt"
(Get-Content C:\Users\AGOJSO\Desktop\xaxa.txt) | ForEach-Object { $_ -replace 'InstanceId       :' } > C:\Users\AGOJSO\Desktop\xaxa.txt
(Get-Content C:\Users\AGOJSO\Desktop\xaxa.txt) | ForEach-Object { $_ -replace 'Line' } > C:\Users\AGOJSO\Desktop\xaxa.txt
(Get-Content C:\Users\AGOJSO\Desktop\xaxa.txt) | ForEach-Object { $_ -replace '----' } > C:\Users\AGOJSO\Desktop\xaxa.txt

foreach ($line in [System.IO.File]::ReadLines("C:\Users\AGOJSO\Desktop\xaxa.txt")) {
    Write-Host "$line"
}

$instanceIDArray = "i-0159d9e5a717cfb73", "i-012fef2b144ea0476"

( (Get-EC2Instance | ? { $_.instances.tag.value -match $instanceIDArray} ).Instances).InstanceID | Stop-EC2Instance $instanceIDArray

Так что теперь мне нужно взаимодействовать через сообщение с пользователем, я пробовал это с этим кодом без удачи, работает только если явведите localhost intead для @IP:

$name = "10.115.106.46"
$msg = "Enter your message "
Invoke-WmiMethod -Path Win32_Process -Name Create -ArgumentList "msg * $msg" -ComputerName $name

Получена ошибка:

Invoke-WmiMethod: доступ запрещен.(Исключение: HRESULT: 0x80070005 (E_ACCESSDENIED))

Спасибо (:

1 Ответ

0 голосов
/ 26 октября 2018

Это не уникально для того, что вы делаете с экземплярами AWS.Безопасность WMI может быть немного привередливой.

Что ж, большой недостаток командлетов WMI заключается в том, что они используют DCOM для доступа к удаленным компьютерам.DCOM не дружествен к брандмауэрам, может быть заблокирован сетевым оборудованием и дает некоторые загадочные ошибки, когда что-то идет не так.

Именно поэтому в последних нескольких выпусках Windows CIM выдвигается.

Так как PowerShellv3 CIM был в центре внимания (он использует WSMAN против DCOM) (PSv2 и ниже были все WMI), хотя многие все еще продолжали использовать WMI по привычке или необходимости поддерживать v2 или ниже.

Даже с MS Online все это PSCore (так что учитесь его использовать) и сфокусированный на CIM.Итак, попробуйте вместо этого использовать Invoke-CimMethod.

Итак, попробуйте использовать Invoke-CimMethod вместо Invoke-WmiMethod, поскольку DCOM во многих случаях требует дополнительных настроек хоста и брандмауэра.

Подробные сведения об этом коде ошибки см. Здесь:

Устранение неполадок WMI

Ошибки Access Denied, о которых сообщают сценарии и приложения, обращающиеся к пространствам имен WMI и данным, обычно подразделяются на три категории.В следующей таблице перечислены три категории ошибок, а также проблемы, которые могут вызвать ошибки, и возможные решения.

0x80070005 - E_ACCESS_DENIED Доступ запрещен системой безопасности DCOM.Пользователь не имеет удаленного доступа к компьютеру через DCOM.Обычно ошибки DCOM возникают при подключении к удаленному компьютеру с другой версией операционной системы.

Предоставьте пользователю разрешения на удаленный запуск и удаленную активацию в dcomcnfg.Щелкните правой кнопкой мыши Мой компьютер-> Свойства. В разделе Безопасность COM щелкните «Изменить ограничения» для обоих разделов.Дайте пользователю, которому вы хотите удаленный доступ, удаленный запуск и удаленную активацию.Затем перейдите к DCOM Config, найдите «Инструментарий управления Windows» и дайте пользователю, который вы хотите удаленного запуска и удаленной активации.Для получения дополнительной информации см. Соединение между различными операционными системами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...