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".