Meilleur auteur de réponses
Empty Pipe Element - Export Powershell

Question
-
Bonjour,
J'ai besoin de récupérer les dernières ouverture de session des utilisateurs de mon AD.
J'ai récupéré ce script qui fonctionne mais je n'arrive pas à faire d'export.
Pouvez-vous m'aider, SVP?
An empty pipe element is not allowed.
At :43 char:3
+ }| <<<< export-csv "Last.Logon.User.csv"
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : EmptyPipeElementTrap {"Error: $_"; Break;} Set-StrictMode -Version latest # Create hash table of users and their last logon dates. $arrUsers = @{} # Retrieve DN and lastLogon for all users on this DC. $Users = Get-ADUser -Filter * -Properties lastLogon, distinguishedName ForEach ($User In $Users) { $DN = $User.distinguishedName $LL = $User.lastLogon If ($LL -eq $Null) { $T = [Int64]0 } Else { $T = [Int64]::Parse($LL) } $D = [DateTime]::FromFileTime($T) If ($arrUsers.ContainsKey("$DN")) { If ($D -gt $arrUsers["$DN"]) { $arrUsers["$DN"] = $D } } Else { $arrUsers.Add("$DN", $D) } } # Output latest last logon date for each user. $Users = $arrUsers.Keys ForEach ($DN In $Users) { $Date = $arrUsers["$DN"] "$DN;$Date" } | export-csv "Last.Logon.User.csv"
- Modifié darkbaky jeudi 5 février 2015 10:49
Réponses
-
Salut,
>>Je ne reçois pas de message d'erreur mais mon fichier ne contient que des numéros.
>>Avez-vous une idée?
Export-Csv exporte des objets, une chaîne de caractères est un objet et seule sa propriété Length est exportée.
Dans ton cas il faut construire un objet dédié :
$List +=New-Object PSObject -Property @{DN=$DN;Date=$Date}
Beatus, qui prodest, quibus potest.
- Modifié Dardenne LaurentMVP, Moderator jeudi 5 février 2015 15:47 coquille
- Marqué comme réponse darkbaky vendredi 6 février 2015 18:26
Toutes les réponses
-
-
Bonjour,
J'ai besoin de récupérer les dernières ouverture de session des utilisateurs de mon AD.
J'ai récupéré ce script qui fonctionne mais je n'arrive pas à faire d'export.
Pouvez-vous m'aider, SVP?
An empty pipe element is not allowed.
At :43 char:3
+ }| <<<< export-csv "Last.Logon.User.csv"
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : EmptyPipeElementTrap {"Error: $_"; Break;} Set-StrictMode -Version latest # Create hash table of users and their last logon dates. $arrUsers = @{} # Retrieve DN and lastLogon for all users on this DC. $Users = Get-ADUser -Filter * -Properties lastLogon, distinguishedName ForEach ($User In $Users) { $DN = $User.distinguishedName $LL = $User.lastLogon If ($LL -eq $Null) { $T = [Int64]0 } Else { $T = [Int64]::Parse($LL) } $D = [DateTime]::FromFileTime($T) If ($arrUsers.ContainsKey("$DN")) { If ($D -gt $arrUsers["$DN"]) { $arrUsers["$DN"] = $D } } Else { $arrUsers.Add("$DN", $D) } } # Output latest last logon date for each user. $Users = $arrUsers.Keys ForEach ($DN In $Users) { $Date = $arrUsers["$DN"] "$DN;$Date" } | export-csv "Last.Logon.User.csv"
Bonjour,
Le "Keyword" "ForEach" ne génère pas d'éléments sur le pipeline, l'erreur est donc normal.
Essaie :
$list = @() ForEach ($DN In $Users) { $Date = $arrUsers["$DN"] $list += "$DN;$Date" } $list | export-csv "Last.Logon.User.csv"
-
-
Bonjour,
Je ne reçois pas de message d'erreur mais mon fichier ne contient que des numéros.
Avez-vous une idée?
#TYPE System.String
"Length"
"66"
"74"
"78"
"72"
"79"
"72"
"102"
"91"
"87"
"66"
"66"
"88"
.....- Modifié darkbaky jeudi 5 février 2015 12:05
-
Bonjour,
Je ne reçois pas de message d'erreur mais mon fichier ne contient que des numéros.
Avez-vous une idée?
#TYPE System.String
"Length"
"66"
"74"
"78"
"72"
"79"
"72"
"102"
"91"
"87"
"66"
"66"
"88"
.....
Le partie que je t'ai fait modifier redirige juste le flux de donnée, je ne touche au corps de ton scripts.
Essaie cette variante :
Trap {"Error: $_"; Break;} Set-StrictMode -Version latest # Create hash table of users and their last logon dates. $arrUsers = @{} # Retrieve DN and lastLogon for all users on this DC. $Users = Get-ADUser -Filter * -Properties lastLogon, distinguishedName ForEach ($User In $Users) { $DN = $User.distinguishedName $LL = $User.lastLogon If ($LL -eq $Null) { $T = [Int64]0 } Else { $T = [Int64]::Parse($LL) } $D = [DateTime]::FromFileTime($T) If ($arrUsers.ContainsKey("$DN")) { If ($D -gt $arrUsers["$DN"]) { $arrUsers["$DN"] = $D } } Else { $arrUsers.Add("$DN", $D) } } # Output latest last logon date for each user. $Users = $arrUsers.Keys $Users | % { $DN = $_ $Date = $arrUsers["$DN"] "$DN;$Date" } | export-csv "Last.Logon.User.csv"
-
Un petit script que j'ai fais il y a quelque temps et qui pourrait correspondre à votre besoin:
$Cou=Read-Host "Selectionner votre OU ou laisser vide pour voir l'ensemble du domaine" $host.ui.RawUI.ForegroundColor = "Yellow" #Get-ADOrganizationalUnit -filter * if($Cou -eq "") { $users = Get-ADUser -filter {Enabled -eq $true} -Properties LastlogonDate | Sort-Object LastlogonDate -descending Foreach ($user in $users) { $lastLogin = $user.LastlogonDate if ($lastLogin -eq $Null) { $lastLogin = 0 } if($lastLogin -eq 0) { $host.ui.RawUI.ForegroundColor = "Red" } else { $date = Get-Date -UFormat %d/%m/%Y $dateuser = $lastLogin $datefinal = Get-Date -Date $dateuser -UFormat %d/%m/%Y if($datefinal -eq $date) { $host.ui.RawUI.ForegroundColor = "Green" } else { $host.ui.RawUI.ForegroundColor = "Yellow" } } $user | Format-Table Name,LastLogonDate } } else { $users = Get-ADUser -filter {Enabled -eq $true} -Searchbase "ou=$Cou,dc=testDom,dc=local" -Properties Lastlogon | Format-Table Name,Lastlogon Foreach ($user in $users) { if($user.Lastlogon -eq 0) { $host.ui.RawUI.ForegroundColor = "Red" } else { $host.ui.RawUI.ForegroundColor = "Green" } $user } } $host.ui.RawUI.ForegroundColor = "White"
Vers l'infini et au delà
-
Salut,
>>Je ne reçois pas de message d'erreur mais mon fichier ne contient que des numéros.
>>Avez-vous une idée?
Export-Csv exporte des objets, une chaîne de caractères est un objet et seule sa propriété Length est exportée.
Dans ton cas il faut construire un objet dédié :
$List +=New-Object PSObject -Property @{DN=$DN;Date=$Date}
Beatus, qui prodest, quibus potest.
- Modifié Dardenne LaurentMVP, Moderator jeudi 5 février 2015 15:47 coquille
- Marqué comme réponse darkbaky vendredi 6 février 2015 18:26
-
Salut,
>>Je ne reçois pas de message d'erreur mais mon fichier ne contient que des numéros.
>>Avez-vous une idée?
Export-Csv exporte des objets, une chaîne de caractères est un objet et seule sa propriété Length est exportée.
Dans ton cas il faut construire un objet dédié :
$List +=New-Object PSObject -Property @{DN=$DN;Date=$Date}
Beatus, qui prodest, quibus potest.
Merci, cela à résolu mon problème.
# Output latest last logon date for each user. $list = @() ForEach ($DN In $Users) { $Date = $arrUsers["$DN"] $List +=New-Object PSObject -Property @{DN=$DN;Date=$Date} } $List| export-csv "Last.Logon.User.csv" -NoTypeInformation