Ядро PowerShell для PowerShell - PullRequest
       13

Ядро PowerShell для PowerShell

0 голосов
/ 09 января 2020

Я использую экземпляр Ubuntu EC2 с установленным Pw sh для удаленного выполнения команд AD на одном из наших серверов. 2sd hop настроен правильно, и я могу запускать команды AD, но при выполнении моего скрипта я получаю следующую ошибку (Scripts отлично работает непосредственно на машине 2sd hop):

Фильтр поиска не распознается

Любая помощь приветствуется.

Обновление: новый код:

#!/usr/bin/pwsh
$cred=Get-Credential domain\myadmin
$employeeEmail = 'myemail@contoso.com'
Invoke-Command -ComputerName corpmaint02 -Credential $cred -ConfigurationName corpmaint02 -Authentication Negotiate  -ArgumentList $employeeEmail -$
Get-ADUser -Filter "EmailAddress -eq '$($Args[0])'" -Properties EmailAddress | Disable-ADAccount -verbose
Write-Host $employeeEmail has been 'disabled.'
}
I modified my code as follow and it works expect for the lack of permissions to disable the account which odd because my admin account has rights to do so. 

Недостаточно прав доступа для выполнения операции
+ CategoryInfo: NotSpecified: (CN = xxxxx \ domain, DC = com: ADUser) [Disable-ADAccount], ADException
+ FullyQualifiedErrorId: ActiveDirectoryServer: 8344, Microsoft.ActiveDirectory.Management.Commands.DisableADAccount + PSComputerName: corpmaint02 * 101

1019 * код для поднятия:

#!/usr/bin/pwsh
$cred=Get-Credential domain\myadmin
$employeeEmail = 'user1@contoso.com' 
Invoke-Command -ComputerName corpmaint02 -Credential $cred -ConfigurationName corpmaint02 -Authentication Negotiate -ArgumentList $employeeEmail,$cred -ScriptBlock{
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
    if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
    exit $LASTEXITCODE
}
Get-ADUser -Filter "EmailAddress -eq '$($Args[0])'" -Properties EmailAddress | Disable-ADAccount -verbose -Credential $Args[1]
}
Write-Host $employeeEmail 'has been disabled.'

1 Ответ

0 голосов
/ 10 января 2020

Invoke-Command не работает с повышенными правами, поэтому вы можете извлекать данные, но не вносить изменения.

https://ss64.com/ps/syntax-elevate.html Если вы используете Invoke-Command для запуска сценарий или команда на удаленном компьютере, тогда он не будет работать с повышенными правами, даже если локальный сеанс работает. Это связано с тем, что любой запрос на повышение прав произойдет на удаленном компьютере в неинтерактивном сеансе, и поэтому произойдет сбой.

Вы можете попробовать самоподъемность в блоке сценариев Invoke-Command (по ссылке выше)

If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
  # Relaunch as an elevated process:
  Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs
  exit
}
# Now running elevated so launch the script:
& "d:\long path name\script name.ps1" "Long Argument 1" "Long Argument 2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...