Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 0
  • 36
Function New-PersonalBox ([string]$NameFirst, [string]$NameLast, [string]$RankNato, [string]$LogIn, [datetime]$AccessExpiration, [datetime]$PlannedExpiration, [string]$OrganizationalUnit, $Password)
    {
        If ($PlannedExpiration -gt $AccessExpiration)
            {
                $AccountExpiration = $AccessExpiration
            }
        Else
            {
                $AccountExpiration = $PlannedExpiration
            }

        [string]$DisplayName = $RankNato + " " + $NameFirst + " " + $NameLast.ToUpper()
        [string]$Alias = Convert-DiactricChars -Text ($NameLast + "_" + $NameFirst + "_" + $RankNato).ToLower()
        [string]$OrganizationalUnit = "OU=Users,OU=FunHouse,DC=funhouse,DC=int"

        If (Get-ADUser -Filter {SamAccountName -eq $LogIn})
            {
                Write-Host ("Konto o tej nazwie istnieje -" + $DisplayName + "-") -ForegroundColor Yellow
            }
        Else
            {
            New-Mailbox -FirstName $NameFirst -LastName $NameLast -Name $DisplayName -SamAccountName $LogIn -UserPrincipalName ($LogIn + "@funhouse.int") -OrganizationalUnit $OrganizationalUnit -Alias $Alias -Password $Password | Out-Null
            Set-ADAccountExpiration -Identity $LogIn -DateTime $AccountExpiration
            
            [datetime]$Today = Get-Date
            If ($AccountExpiration -le $Today)
                {
                    Disable-ADAccount -Identity $LogIn
                }

            Write-Host ("Utworzono konto -" + $DisplayName + "-") -ForegroundColor Green
            }


        Get-ADUser -Identity $LogIn -Properties AccountExpirationDate, mail | Format-Table Name, AccountExpirationDate, mail, Enabled -AutoSize
    }

Function New-FunBox
    {
        [bool]$Controller = $true

        While ($Controller)
            {
                Clear-Host
                Write-Host "(4) - Importuj konta osobiste z CSV"
                Write-Host "(6) - Wyjście"
                Write-Host

                $Choice = Read-Host "Wybierz jedną z opcji"

                Switch ($Choice)
                    {
                        4 # personnal Boxes from CSV
                            {
                                Clear-Host
                                [string]$PathCsv = Read-Host "Wpisz ścieżkę pliku"
                                [string]$Users = Import-Csv $PathCsv
                                [string]$Password = Read-Host -AsSecureString "Hasło pierwszego logowania dla kont"
                                [string]$OrganizationalUnit = "OU=Users,OU=FunHouse,DC=funhouse,DC=int"

                                ForEach ($User in $Users)
                                    {
                                        [string]$NameFirst = $User.FirstName
                                        [string]$NameLast = $User.LastName
                                        [string]$RankNato = $User.Rank
                                        [string]$LogIn = $User.Login
                                        [datetime]$AccessExpiration = $User.AccessExpiration
                                        [datetime]$PlannedExpiration = $User.AccountExpiration
                                        
                                        New-PersonalBox $NameFirst $NameLast $RankNato $LogIn $AccessExpiration $PlannedExpiration $OrganizationalUnit $Password
                                    }
                            }

                        default {Write-Host "Niewłaściwy wybór"}
                    }
                Pause
            }
    }

 

Zawartość pliku CSV:

"Rank","FirstName","LastName","Login","AccessExpiration","AccountExpiration"
"PC","Kajser","Soze","ksoze","10.10.2020","10.10.2020"
"OR-1","Emilia","Plater","eplater","10.10.2020","10.10.2020"

Jak odwołać się do formatu [datetime] w pliku csv, w obecnym kodzie występuje błąd:

"Cannot convert null to type "System.DateTime".

Wojciech_Węgliński
  • Zapytał
  • @ Wojciech_Węgliński | 24.11.2016
    • 3
    • 0
    • 2

Odpowiedzi (2)

  • 1

Problem nie leży w typie DateTime, tylko w tym, że kolekcja $Users jest pusta.

Należy zapis w linijce:

[string]$Users = Import-Csv $PathCsv

Zamienić na:

$Users = Import-Csv $PathCsv

 

  • Odpowiedział
  • @ | 29.11.2016
  • TRENER ALTKOM AKADEMII
  • 0

Dziękuję za odpowiedź.

Wojciech_Węgliński
  • Odpowiedział
  • @ Wojciech_Węgliński | 30.11.2016
    • 3
    • 0
    • 2