none
Помогите допилить скрипт - активация пользователей в AD RRS feed

  • Вопрос

  • Всем привет!

    Благодаря уважаемому форумчанину Kazun я из кусков его кода слепил под свои нужды скрипт. Вот он:                

    $enableMail = 0
    $file = "dom_14.08.15.csv"
    $filepath = "C:\111"
    $upass = "Aa123456"
    $okArray = @()
    $errorArray = @()

    Get-Content C:\111\user.txt | Foreach {
    $user = Get-ADUser -Filter {(name -eq $_) -or (sAMAccountName -eq $_)}
        if (($user).count -ne 1) {
            $errorArray += $_
        }
        else {
            Get-ADUser $user -Properties * |select @{N='ФИО';E={$user.name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} }, description | Export-Csv -Path $filepath\$file -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
            $path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
            $path = $path[1..($path.count-1)] -join ","
            $user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false
            if ($enableMail -eq 1) { 
                $mb = $user.sAMAccountName
                $db = "dom-mdb-500-mb2"
                $pw = convertto-securestring -AsPlainText -Force -String PASS
                $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "dom\administrator",$pw
                $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://dom-mailb-01.dom.local/PowerShell -Credential $cred
                Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
                Remove-PSSession $Session
            }
            $okArray += $user.sAMAccountName
            }

    }



    if ( $okArray -ne 0 ) { 
    write-host "`nOK users:" -foregroundcolor green
    $okArray | Write-Host -foregroundcolor green }

    if ( $errorArray -ne 0 ) { 
        write-host "`nCheck users:" -foregroundcolor red
        $errorArray | Write-Host -foregroundcolor red }

    Хотелось бы его модернизировать:

    Пользователей считывать из csv-файла вида:

    111;Иванов Иван Иванович

    222;Петров Петр Петрович 

    и т.д. где числа - это значение атрибута extensionAttribute1 и активировать только тех пользователей у которых Name и extensionAttribute1  соответствуют значением из файла (т.к. много полных однофамильцев) при этом extensionAttribute1  - не уникален и у разных пользователей может быть одинаков. А пользователей из файла у которых в поле description что-либо записано - вывести в отдельный файл.

    Вы уж помогите кто чем может

    Заранее спасибо

    14 августа 2015 г. 9:55

Ответы

  • 1) Формат csv

    ID;NAME
    111;Иванов Иван Иванович
    222;Петров Петр Петрович 
    

    2) Кодировка файла UTF8 csv

    3) Если Description есть, то добавляется в файл - "$filepath\with_description_$file"

    4) Если Description нет , то добавляется в файл - "$filepath\no_description_$file"

    5) Если у пользователя extensionAttribute1 = ID , то включаем ему почту

    $file = "dom_14.08.15.csv"
    $filepath = "C:\111"
    $upass = "Aa123456"
    $okArray = @()
    $errorArray = @()
    
    $db = "dom-mdb-500-mb2"
    $pw = convertto-securestring -AsPlainText -Force -String PASS
    $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "dom\administrator",$pw
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://dom-mailb-01.dom.local/PowerShell -Credential $cred
    
    			
    $users = Import-CSV users.csv -Delimiter ";"
    
    $users | Foreach {
    	$id = $_.Id
    	$name = $_.Name
    	$enableMail = $false
    	
    	$user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute1
        
    	if($user)
    	{
            if($user.Description) {
    			$user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\with_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    		}
    		else {
    			$user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} }, Description | Export-Csv -Path "$filepath\no_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    		}
    		
    		$path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
            $path = $path[1..($path.count-1)] -join ","
            $user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false
    		
    		if($user.extensionAttribute1 -eq $id) {$enableMail=$true}
            if ($enableMail) { 
    			$mb = $user.sAMAccountName
                Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
            }
            
    		$okArray += $user.sAMAccountName
        }
    	
    	else {
    		$errorArray += "{0};{1}" -f $id,$name
    	}
    
    }
    
    Remove-PSSession $Session
     
    

    • Предложено в качестве ответа Alexander RusinovModerator 14 августа 2015 г. 11:45
    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    14 августа 2015 г. 10:29
    Отвечающий
  • $users | Foreach {
    	$id = $_.Id
    	$name = $_.Name
    	[int]$enableMail = $_.enableMail
    	
    	$user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute1
        
    	if($user)
    	{
            if($user.Description) {
    			$user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\with_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    		}
    		else {
    			if($user.extensionAttribute1 -eq $id) {
    				$path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
    				$path = $path[1..($path.count-1)] -join ","
    				$user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false
    				
    				if ($enableMail -eq 1) { 
    					$mb = $user.sAMAccountName
    					Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
    				}
    		
    				$okArray += $user.sAMAccountName
    			}			
    		}   
        }
    	
    	else {
    		$errorArray += "{0};{1}" -f $id,$name
    	}
    }


    • Изменено KazunEditor 14 августа 2015 г. 12:00
    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    14 августа 2015 г. 11:55
    Отвечающий
  • Присваивает значение переменных из файла. Как пример:

    $id = $_.id  - будет 111

    $name = $_.Name - Иванов Иван Иванович
    [int]$enableMail = $_.$enableMail - 0

    ID;NAME;enableMail
    111;Иванов Иван Иванович;0
    222;Петров Петр Петрович;1 


    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    14 августа 2015 г. 12:13
    Отвечающий
  • Одна ; лишняя, должно быть- Гужеля Михаил Павлович

    И какой вывод:

    $user = Get-ADUser -Filter "Name -eq 'Гужеля Михаил Павлович'" -Properties description,extensionAttribute3

    $user.extensionAttribute3 -eq "2077"

      
    • Изменено KazunEditor 17 августа 2015 г. 12:30
    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    17 августа 2015 г. 12:30
    Отвечающий
  • notepad - в новый файл вставить данные - Файл - Сохранить как - Выбрать кодировку UTF-8 - Сохранить

    После проверить вывод:

    Import-CSV C:\uncle_igor\111.csv -Delimiter ";"

    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    17 августа 2015 г. 13:30
    Отвечающий

Все ответы

  • 1) Формат csv

    ID;NAME
    111;Иванов Иван Иванович
    222;Петров Петр Петрович 
    

    2) Кодировка файла UTF8 csv

    3) Если Description есть, то добавляется в файл - "$filepath\with_description_$file"

    4) Если Description нет , то добавляется в файл - "$filepath\no_description_$file"

    5) Если у пользователя extensionAttribute1 = ID , то включаем ему почту

    $file = "dom_14.08.15.csv"
    $filepath = "C:\111"
    $upass = "Aa123456"
    $okArray = @()
    $errorArray = @()
    
    $db = "dom-mdb-500-mb2"
    $pw = convertto-securestring -AsPlainText -Force -String PASS
    $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "dom\administrator",$pw
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://dom-mailb-01.dom.local/PowerShell -Credential $cred
    
    			
    $users = Import-CSV users.csv -Delimiter ";"
    
    $users | Foreach {
    	$id = $_.Id
    	$name = $_.Name
    	$enableMail = $false
    	
    	$user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute1
        
    	if($user)
    	{
            if($user.Description) {
    			$user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\with_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    		}
    		else {
    			$user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} }, Description | Export-Csv -Path "$filepath\no_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    		}
    		
    		$path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
            $path = $path[1..($path.count-1)] -join ","
            $user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false
    		
    		if($user.extensionAttribute1 -eq $id) {$enableMail=$true}
            if ($enableMail) { 
    			$mb = $user.sAMAccountName
                Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
            }
            
    		$okArray += $user.sAMAccountName
        }
    	
    	else {
    		$errorArray += "{0};{1}" -f $id,$name
    	}
    
    }
    
    Remove-PSSession $Session
     
    

    • Предложено в качестве ответа Alexander RusinovModerator 14 августа 2015 г. 11:45
    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    14 августа 2015 г. 10:29
    Отвечающий
  • Извините но мне не нужно активировать почту если у пользователя extensionAttribute1 = ID. $enableMail = 0 - это я делал для того что бы была возможность выбора - делать почту пользователю или нет!

    Мне нужно что бы активировался только тот пользователь у кого Name и extensionAttribute1 - совпадают с значениями из файла. И что бы пользователи у которых description не пустой не активировались а просто их данные заносились в отдельный файл.

    Извините если коряво объяснил и ввёл Вас в заблуждение!

    14 августа 2015 г. 11:46
  • $users | Foreach {
    	$id = $_.Id
    	$name = $_.Name
    	[int]$enableMail = $_.enableMail
    	
    	$user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute1
        
    	if($user)
    	{
            if($user.Description) {
    			$user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\with_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    		}
    		else {
    			if($user.extensionAttribute1 -eq $id) {
    				$path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
    				$path = $path[1..($path.count-1)] -join ","
    				$user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false
    				
    				if ($enableMail -eq 1) { 
    					$mb = $user.sAMAccountName
    					Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
    				}
    		
    				$okArray += $user.sAMAccountName
    			}			
    		}   
        }
    	
    	else {
    		$errorArray += "{0};{1}" -f $id,$name
    	}
    }


    • Изменено KazunEditor 14 августа 2015 г. 12:00
    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    14 августа 2015 г. 11:55
    Отвечающий
  • Спасибо.

    Попробую - отпишусь по результатам.

    А не могли бы Вы просветить что делает этот код:

    $id = $_.Id
    	$name = $_.Name
    	[int]$enableMail = $_.$enableMail

    я в ПоШе не силён - поэтому тут Вам надоедаю.

    14 августа 2015 г. 12:09
  • Присваивает значение переменных из файла. Как пример:

    $id = $_.id  - будет 111

    $name = $_.Name - Иванов Иван Иванович
    [int]$enableMail = $_.$enableMail - 0

    ID;NAME;enableMail
    111;Иванов Иван Иванович;0
    222;Петров Петр Петрович;1 


    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    14 августа 2015 г. 12:13
    Отвечающий
  • Боюсь мы опять друг друга не поняли.

    В csv-файле я не указываю - кому делать почтовый ящик а кому нет. $enableMail = 0 - это у меня для того что бы отрабатывал код:

    if ($enableMail -eq 1) { 
                $mb = $user.sAMAccountName
                $db = "dom-mdb-500-mb2"
                $pw = convertto-securestring -AsPlainText -Force -String PASS
                $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "dom\administrator",$pw
                $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://dom-mailb-01.dom.local/PowerShell -Credential $cred
                Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
                Remove-PSSession $Session

     просто мне необходимо либо всем пользователям из файла делать ящик либо не делать никому.

    Именно для этого я в начале скрипта и управляю с помощью переменной $enableMail  - устанавливаю либо в 0 либо в 1. Может быть это можно сделать изящнее - но я не силен в ПоШе  и по этому для Вас это может выглядеть запутанно и коряво.

    14 августа 2015 г. 12:28
  • С Вашей помощью склепал такой скрипт:

        

    $file = "cps_17.08.15.csv"
    $filepath = "C:\111"
    $upass = "Aa123456"
    $okArray = @()
    $errorArray = @()
    $enableMail = 0

    $db = "dom-mdb-500-mb2"
    $pw = convertto-securestring -AsPlainText -Force -String PASS
    $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "dom\administrator",$pw
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://dom-mailb-01.dom.local/PowerShell -Credential $cred


    $users = Import-CSV C:\111.csv -Delimiter ";"

    $users | Foreach {
    $id = $_.Id
    $name = $_.Name
    #[int]$enableMail = $_.$enableMail

    $user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute1

    if($user)
    {
            if($user.Description) {
    $user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\with_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    }
    else {
    if($user.extensionAttribute1 -eq $id) 
    {
                    $user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\without_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    $path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
    $path = $path[1..($path.count-1)] -join ","
    $user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false

    if ($enableMail -eq 1) { 
    $mb = $user.sAMAccountName
    Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
    }

    $okArray += $user.sAMAccountName
    }
    }   
        }

    else {
    $errorArray += "{0};{1}" -f $id,$name
    }
    }

    Remove-PSSession $Session

    Пользователи активируются и корректно перемещаются  но файл without_description_ не создаётся.

    Где я ошибся не подскажите?

    17 августа 2015 г. 10:54
  • Собственно нигде, все должно отрабатывать.

    Файл с with_description_* - создается?

    Добавьте после и посмотрите результат:

    if($user.extensionAttribute1 -eq $id) 
    {

    Write-Host $user.Name -ForeGround Yellow

    }

    17 августа 2015 г. 11:55
    Отвечающий
  • Вот пример csv:

    id;name
    2077;Гужеля Михаил Павлович;

    Ошибок нет и пользователь не активируется. Файлы не создаются. При этом руками ему прописывал дискрипшн - всё равно тот же результат.

    Вот скрипт которым делал:

    $file = "cps_17.08.15.csv"
    $filepath = "C:\igor"
    $upass = "Aa123456"
    $okArray = @()
    $errorArray = @()
    $enableMail = 0

    $db = "zst-mdb-500-mb2"
    $pw = convertto-securestring -AsPlainText -Force -String PASS
    $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "dom\administrator",$pw
    #$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://dom-mailb-01.dom.local/PowerShell -Credential $cred


    $users = Import-CSV C:\igor\111.csv -Delimiter ";"

    $users | Foreach {
    $id = $_.Id
    $name = $_.Name
    #[int]$enableMail = $_.$enableMail

    $user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute3
        
    if($user)
    {
            if($user.Description) {
    $user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\with_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    }
    else {
    if($user.extensionAttribute3 -eq $id) 
    {
                    $user | select @{N='ФИО';E={$name}}, @{N='Пользователь';E={$user.samaccountname}}, @{ Name = "Пароль" ; Expression= {$upass} } | Export-Csv -Path "$filepath\without_description_$file" -Encoding UTF8 -Append -NoTypeInformation -Delimiter ";"
    $path = $user.DistinguishedName.replace("OU=Disabled","OU=Active").split(",")
    $path = $path[1..($path.count-1)] -join ","
    $user | Move-ADObject -TargetPath $path -Confirm:$false -PassThru | Enable-ADAccount -Confirm:$false
                    Write-Host $user.Name -ForeGround Yellow

    if ($enableMail -eq 1) { 
    $mb = $user.sAMAccountName
    Invoke-Command $Session {param($mb,$db) Enable-Mailbox $mb -Database $db} -ArgumentList $mb,$db
    }

    $okArray += $user.sAMAccountName
    }
    }   
        }

    else {
    $errorArray += "{0};{1}" -f $id,$name
    }
    }

    #Remove-PSSession $Session

    17 августа 2015 г. 12:27
  • Одна ; лишняя, должно быть- Гужеля Михаил Павлович

    И какой вывод:

    $user = Get-ADUser -Filter "Name -eq 'Гужеля Михаил Павлович'" -Properties description,extensionAttribute3

    $user.extensionAttribute3 -eq "2077"

      
    • Изменено KazunEditor 17 августа 2015 г. 12:30
    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    17 августа 2015 г. 12:30
    Отвечающий
  • Спасибо. Убрал.
    Теперь файл имеет вид:
    id;name
    2077;Гужеля Михаил Павлович
    Вывод:

    PS C:\Windows\system32> $user = Get-ADUser -Filter "Name -eq 'Гужеля Михаил Павлович'" -Properties description,extensionAttribute3

    $user.extensionAttribute3 -eq "2077"
    $user.description
    True
    gfghbgfbfgbnfgb
    Файл не создался. Дескрипшн от себя добавил. Пользователь не активировался.Ошибок не сыпало.
    Скажите а может это из-за того что Вы выбираете из AD как:
    $user = Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute3
    а может надо:
    $user = Get-ADUser -Filter {Name -eq $name} -Properties *   ???
    17 августа 2015 г. 12:54
  • Пробелов лишних нет в файле с csv?

    Исправить $name = $_.Name на $name = $_.Name.Trim()

    Файл есть with_description_$file ?


    • Изменено KazunEditor 17 августа 2015 г. 13:05
    17 августа 2015 г. 12:58
    Отвечающий
  • Странно.

    $user = Get-ADUser -Filter "Name -eq 'Гужеля Михаил Павлович'" -Properties * | select  extensionAttribute3 

    Write-Host $user

    выводит:

    @{extensionAttribute3=2077}

    а 

    $user = Get-ADUser -Filter "Name -eq 'Гужеля Михаил Павлович'" -Properties extensionAttribute3
    Write-Host $user

    выводит:

    CN пользователя.

    Почему так происходит????

    17 августа 2015 г. 13:08
  • Что выводит код:

    $users = Import-CSV C:\igor\111.csv -Delimiter ";" $users | Foreach { $id = $_.Id

    $name = $_.Name.Trim() Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute3 }



    • Изменено KazunEditor 17 августа 2015 г. 13:15
    17 августа 2015 г. 13:14
    Отвечающий
  • PS C:\Windows\system32> $users = Import-CSV C:\igor\111.csv -Delimiter ";" 
    $users | Foreach {
    $id = $_.Id
    $name = $_.Name.Trim()
    Get-ADUser -Filter {Name -eq $name} -Properties description,extensionAttribute3
    }

    PS C:\Windows\system32> 
    17 августа 2015 г. 13:17
  • Собственно ничего не выводит...
    17 августа 2015 г. 13:18
  • А Import-CSV C:\igor\111.csv -Delimiter ";" ?
    17 августа 2015 г. 13:23
    Отвечающий
  • PS C:\Windows\system32>  Import-CSV C:\uncle_igor\111.csv -Delimiter ";"

    id                                                                                                            name                                                                                                        
    --                                                                                                            ----                                                                                                        
    2077                                                                                                          ������ ������ ��������    непечатаемые символы в поле name...
    17 августа 2015 г. 13:25
  • notepad - в новый файл вставить данные - Файл - Сохранить как - Выбрать кодировку UTF-8 - Сохранить

    После проверить вывод:

    Import-CSV C:\uncle_igor\111.csv -Delimiter ";"

    • Помечено в качестве ответа Igor3000 18 августа 2015 г. 5:56
    17 августа 2015 г. 13:30
    Отвечающий
  • Ай карамба!

    Спасибо Вам за терпение!!!

    Меня ввело в заблуждение то что не было  ошибок.

    Для общего развития - не подскажите почему не происходил импорт и не создавались файлы при неправильной кодировке???

    18 августа 2015 г. 5:56