Обработка пользовательских сертификатов AD

Весной это должно быть сделано следующим образом: ваш класс электронной почты:

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

public class HTMLMail
{
    private JavaMailSender mailSender;


    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void sendMail(String from, String to, String subject, String msg) {
        try {

            MimeMessage message = mailSender.createMimeMessage();

            message.setSubject(subject);
            MimeMessageHelper helper;
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setText(msg, true);
            mailSender.send(message);
        } catch (MessagingException ex) {
            Logger.getLogger(HTMLMail.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


}

beans: (Spring-Mail.xml)



    
        
        
        
        

        
            
                true
                true
            
        
    
    
        
    

Использование:

ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Mail.xml");

        HTMLMail mm = (HTMLMail) context.getBean("htmlMail");
        String html="

Hi!

Link text"; mm.sendMail("sender@gmail.com", "receiver@gmail.com", "test html email", html);

Полный пример здесь .

0
задан StanTastic 19 March 2019 в 14:13
поделиться

2 ответа

Я бы отфильтровал по значению ObjectId:

$certificates |Where-Object {

Я бы отфильтровал по значению ObjectId:

[110]

Этот пример опирается на перечисление свойств OID в EnhancedKeyUsageList, поэтому он будет работать только в PowerShell 4.0 или новее

.EnhancedKeyUsageList.ObjectId -like '1.3.6.1.5.5.7.3.2'}

Этот пример опирается на перечисление свойств OID в EnhancedKeyUsageList, поэтому он будет работать только в PowerShell 4.0 или новее

0
ответ дан Mathias R. Jessen 19 March 2019 в 14:13
поделиться

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

$adUser.Certificates | Where-Object {
    

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

1,2,3 -eq 3  # produces 3
1,3,3 -eq 3  # produces 3,3

Вы можете пойти до

Get-ADUser -Property Certificates | Where-Object {
    

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

$minValid = (Get-Date).AddMonths(6)

Get-ADUser -Property Certificates -PipelineVariable user | ForEach-Object {
    # ...we have "user" objects here
    Write-Host 

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113]

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].Certificates | Where-Object {

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4" -and

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].NotAfter -lt $minValid } } | ForEach-Object { # ...we have "certificate" objects here Write-Host

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113] }
.EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].Certificates.EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4" }

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

$minValid = (Get-Date).AddMonths(6)

Get-ADUser -Property Certificates -PipelineVariable user | ForEach-Object {
    # ...we have "user" objects here
    Write-Host 

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113]

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].Certificates | Where-Object {

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4" -and

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].NotAfter -lt $minValid } } | ForEach-Object { # ...we have "certificate" objects here Write-Host

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113] }
.EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4" }

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

1,2,3 -eq 3  # produces 3
1,3,3 -eq 3  # produces 3,3

Вы можете пойти до

Get-ADUser -Property Certificates | Where-Object {
    

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

$minValid = (Get-Date).AddMonths(6)

Get-ADUser -Property Certificates -PipelineVariable user | ForEach-Object {
    # ...we have "user" objects here
    Write-Host 

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113]

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].Certificates | Where-Object {

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это,

Как правило, вы можете использовать [114] для фильтрации конвейера и [115] для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют [116] в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение [117], он извлекает все значения [118], для всех них он извлекает все [119] значений, и для всех их он выбирает все [1110] значений. Это значительно экономит время при наборе текста. В традиционном императивном языке для этого вам понадобятся вложенные циклы, в Powershell вам вообще не нужны циклы.

Зная это, [1111] становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4"
становится возможным, потому что -eq не является вашим традиционным оператором "равенства": он берет список значений и фильтрует их, то есть:

[111]

Вы можете пойти до

[112]

, чтобы получить всех пользователей AD, имеющих соответствующий сертификат, за один раз.

Поскольку вы хотите отфильтровать два свойства для сертификата, я бы порекомендовал несколько вариантов

[113].EnhancedKeyUsageList.oid.Value -eq "1.3.6.1.5.5.7.3.4" -and

Как правило, вы можете использовать Where-Object для фильтрации конвейера и -eq для фильтрации списков. В этом случае что-то вроде:

[110]

выдаст вам все сертификаты пользователя, которые имеют "1.3.6.1.5.5.7.3.4" в своем списке EKU.

Обратите внимание, что когда Powershell (4.0 и выше) видит такое выражение $object.Property.ChildProperty.SomeData, он извлекает все значения Property, для всех них он извлекает все ChildProperty значений, и для всех их он выбирает все SomeData значений. Это значительно экономит время при наборе текста. В традиционном императивном язы

0
ответ дан Tomalak 19 March 2019 в 14:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: