Проблемы с учетными данными Powershell, не проходящими через - PullRequest
0 голосов
/ 26 сентября 2018

Я создал скрипт выхода, который должен быть автоматизирован.Скрипт работает отлично, за исключением одной части;объект учетных данных, который находится в начальной части, не выполняется ни в одной из функций.

Он по-прежнему принимает учетные данные и подключается к онлайновому Exchange PowerShell, но по какой-то причине, когда сценарий запускается, чтобы отключитьУчетная запись MSOl, удаление лицензий и т. Д. Останавливается и запрашивает учетные данные;что не имеет смысла, поскольку учетная запись службы входит в систему и подключается, а сеанс импортируется.

код отправляется:

$username = "serviceaccountit@company.com"

$password = 'somepassword'

$secureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force 

$creds = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $secureStringPwd

###############################################################

Set-ExecutionPolicy RemoteSigned -Force

$Session = New-PSSession -ConfigurationName Microsoft.Exchange - 
ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential 
$creds -Authentication  Basic -AllowRedirection

Import-PSSession $Session

Connect-MsolService -Credential $creds

Import-Module ActiveDirectory

########################################################################


$Exit = import-csv 'C:\File\Path\ETC'

$DisabledUserParams = @{

AccountName = $Exit.SamAccountName.Trim()

UPN = "$($Exit.SamAccountName.ToLower().Trim())@Company.com" 

}

########################################################################
#Add the scrubber function to be standard on the script
function Disable-ThisMSOLACCOUNT{

#variables

$AccountInfo = Get-MsolUser -UserPrincipalName $DisabledUserParams.UPN 

$CurrentAccountSku = $AccountInfo.Licenses.AccountSkuId

$MSOLAccountSku = Get-MsolAccountSku

$MSOLAccountLicense = $MSOLAccountSku.AccountSkuId

$DistributionGroups = Get-DistributionGroup

$DLs = $DistributionGroups.PrimarySmtpAddress

$CheckDL = Get-DistributionGroupMember -Identity $DLs

$SharedMailboxes = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails SharedMailbox

$MailDGS= Get-Recipient -ResultSize unlimited -RecipientType MailUniversalDistributionGroup

############################################################################################

foreach ($License in $MSOLAccountLicense) {

$RemoveLicense =@{

RemoveLicense = $License

}

try {

        Set-MsolUserLicense -UserPrincipalName $DisabledUserParams.UPN  RemoveLicenses $RemoveLicense.RemoveLicense -ErrorAction Continue }

       catch [Microsoft.Online.Administration.Automation.InvalidUserLicenseException,Microsoft.Online.Administration.Automation.SetUserLicense] {

        if ($_.Exception.Message -ilike "*Unable to assign this license because it is invalid") {

        Write-Host 'Error taking off License'

        Write-Host 'Run the Check at End'

        Continue

   }
   }
   } 

#####################################################################################################


foreach ($Distrolist in $DLs) {

   $RemoveDLM =@{

   RemoveGroup = $Distrolist

   Name = $CheckDL.Name

   }

        if($DisabledUserParams.AccountName -match $RemoveDLM.Name) {

            try {

            Remove-DistributionGroupMember -identity $RemoveDLM.RemoveGroup -member $DisabledUserParams.AccountName  -Confirm:$False -ErrorAction Continue }

            catch [Microsoft.Exchange.Management.RecipientTasks.RemoveDistributionGroupMember] 

            {

                if ($_.Exception.Message -ilike "*You don't have sufficient permissions") {

                Continue

                }
            }
        } 


   continue

   }


#####################################################################################################

foreach ($SM in $SharedMailboxes) {

   $RemoveSM =@{

   RemoveSM = $SM.Name

   }

    try {

           Remove-Mailboxpermission -identity $RemoveSM.RemoveSM -User $DisabledUserParams.AccountName  -Confirm:$False -ErrorAction Continue } 

    catch { 

                continue

   } 


#####################################################################################################

foreach($DGS in $mailDGS) {

    $RemoveMDGS = @{

    RemoveMDGS = $DGS.Name}

    try{
        Remove-RecipientPermission $RemoveMDGS.RemoveMDGS -Trustee $DisabledUserParams.AccountName -AccessRights SendAs -Confirm:$False} 

   catch { 

            continue

    } 

}
}
}

function Disable-ThisADACCOUNT{

$OUTransfer = "OU=Disabled Users Accounts,DC=company,DC=local"

$ADAccountPG = Get-ADPrincipalGroupMembership -Identity $DisabledUserParams.AccountName

$CurrentAdGroup = $ADAccountPG.name

Foreach($Group in $CurrentAdGroup) {

    $RemoveAdG = @{

    RemoveGroup = $group}

    Remove-ADGroupMember -Identity $RemoveAdG.RemoveGroup -Members $DisabledUserParams.AccountName -Confirm:$False -ErrorAction SilentlyContinue}


Get-ADUser $DisabledUserParams.AccountName | Move-ADObject -TargetPath $OUTransfer

}

try { Get-ADUser $DisabledUserParams.AccountName}  catch 
[Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADUser] {

    if ($_.Exception.Message -ilike "*Cannot find an object with identity" )     { 

    Disable-ThisMSOLACCOUNT}

        else {Disable-ThisADACCOUNT

              Disable-ThisMSOLACCOUNT

              }

              }

Код зависает в функции Disable-ThisMSOOLACCOUNT.Он пытается снова войти в учетную запись службы, но объект кредита PS создан и аргументы верны.

Пожалуйста, дайте мне знать, что можно сделать, чтобы это исправить, поскольку наличие учетной записи службы приводит к созданию автоматической учетной записи.создание / выход лучше.

Спасибо,

1 Ответ

0 голосов
/ 27 сентября 2018

https://social.technet.microsoft.com/Forums/en-US/2b34a686-fa2b-41a7-8155-059e2b35b393/using-pscredential-object-without-a-prompt-and-connecting-to-a-remote-registry-in-powershell?forum=ITCG

Это ссылка, по которой я узнал, как заставить работать учетные данные и не запрашивать их снова.

Ответили: EIG-Wes

Проблемы были с удаленной подписью, и она была исправлена ​​с помощью этой команды:

Enable-PSRemoting -Force

Благодарю этого парня, но, черт возьми, чувак, который отверг меня.Шутки в сторону.Напишите комментарий, если есть проблема.

Я надеюсь, что это может помочь кому-то с его учетными записями ИТ-службы в PS

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