Извлечение самой последней активности / даты входа - PullRequest
0 голосов
/ 04 ноября 2019

Я извлекаю компьютеры с нашего портала Azure, и я специально ищу устройства, которые не имели активности более 120 дней.

Проблема, возникающая при каждом извлечении этой информации, дает только активность / вход в системупервоначальной регистрации устройства.

Некоторые из наших устройств имеют несколько регистраций, поскольку они передаются от пользователя к пользователю.

Поэтому, когда я извлекаю информацию, она не является точной.

Я использовал нижеприведенное, которое, по моему мнению, должно работать, но я все еще получаю устройства, которые имеют более новую активность, чем моя целевая дата. Я также вижу ошибку, когда запускаю скрипт, который у меня есть, который приведен ниже под кодом, который я использовал.

Может кто-нибудь помочь мне, я чувствую, что я близок.

clear-host

$maxDate = Get-Date '6/1/19'

#Create a hash table to remove dupes
$set = @{}

#create our final array
$cleanSet = @()

#load data
$data = Get-MsolDevice -All | select-object -Property ObjectID, ApproximateLastLogonTimestamp, DisplayName

#for each item in the pipeline, add it to our hash table
foreach($_ in $data) {

    #if the item isn't in the hash table, add it
    if(!$set.Contains($_.ObjectID)) {
        $set.Add($_.ObjectID, $_)
    }
    else {
        #if we have a more recent date for the item, update the date so we only have the most recent one
        if((Get-Date $_.ApproximateLastLogonTimestamp) -gt (Get-Date $set[$_.ObjectId].ApproximateLastLogonTimestamp)) {
            $set[$_.ObjectID].ApproximateLastLogonTimestamp = $_.ApproximateLastLogonTimestamp
        }
    }
}

#now that we have the most recent date for each item, remove ones newer than our target date.
$set.GetEnumerator() | ForEach-Object{
    if((get-date $_.Value.ApproximateLastLogonTimestamp) -lt $maxDate) {
        $cleanSet +=  $_.Value
    }
}

$cleanSet | select-object -Property ObjectID, DisplayName | export-csv "C:\Users\tesyuser\Desktop\Project Work\Stale machine on Azure\Exported CSV\2HIE-Stale-Device-List.csv" -NoTypeInformation

ошибка

Get-Date: Невозможно привязать параметр 'Date' к цели. Параметр исключения «Дата»: «Невозможно преобразовать значение NULL в тип« System.DateTime ».»В строке: 29 символов: 18

1 Ответ

0 голосов
/ 04 ноября 2019

Привет. Итак, мой код должен выглядеть следующим образом?

$maxDate = Get-Date '6/1/19'

#Create a hash table to remove dupes
$set = @{}

#create our final array
$cleanSet = @()

#load data
$data = Get-MsolDevice -All | select-object -Property ObjectID, ApproximateLastLogonTimestamp, DisplayName

#for each item in the pipeline, add it to our hash table
$data | ForEach-Object {..} {

    #if the item isn't in the hash table, add it
    if(!$set.Contains($_.ObjectID)) {
        $set.Add($_.ObjectID, $_)
    }
    else {
        #if we have a more recent date for the item, update the date so we only have the most recent one
        if((Get-Date $_.ApproximateLastLogonTimestamp) -gt (Get-Date $set[$_.ObjectId].ApproximateLastLogonTimestamp)) {
            $set[$_.ObjectID].ApproximateLastLogonTimestamp = $_.ApproximateLastLogonTimestamp
        }
    }
}

#now that we have the most recent date for each item, remove ones newer than our target date.
$set.GetEnumerator() | ForEach-Object{
    if((get-date $_.Value.ApproximateLastLogonTimestamp) -lt $maxDate) {
        $cleanSet +=  $_.Value
    }
}

$cleanSet | select-object -Property ObjectID, DisplayName | export-csv "C:\Users\birrelld\Desktop\Project Work\Stale machine on Azure\Exported CSV\3HIE-Stale-Device-List.csv" -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...