Vraag : VBScript: Het trekken lastLogonTimestamp

Hello Deskundigen!

ik heb de functionaliteit van wat ik binnen een DSQUERY en een PowerShell nodig heb, nochtans denk ik wat in mijn bijzonder geval moet worden gedaan is de weg DN in series uit te splitsen zodat elk OU niveau leesbaar is.  Bijvoorbeeld, vloeit het heden dossier voort dat ik voor dit bevat ruwweg rond 75k rijen heb en de weg DN van anwhere van 3 tot diep OU kan het gemiddelde nemen 6.  Zo welke einden die omhoog is gebeuren dat enkele andere kolomgegevens zich in een OU kolom of zelfs een andere kolom zullen vinden, zodat wanneer ik ga sorteren het werpt weg het gehele ding.  Door OU in een serie of één of andere soort van gespleten funtion behoorlijk op te splitsen dat het elke OU in de kolommen correct zal opstellen.  Fundamenteel zijn de gegevens niet columned correct door enkele spreadsheet.

zo met dit manuscript ik sAMAccountName, DisplayName, UPN en LogonTimestamp voor elke actieve gebruiker in mijn milieu van de ADVERTENTIE zou willen trekken.  

de onderhavige resultaatdossiers dat ik terugkrijg zijn in .CSV formaat dat de komma in de weg DN omvat, zodat is het moeilijk om hen te scheiden om OU te onderscheiden.  Zo zette ik toen CSV in een TSV om en plaatste toen de speciale exploitant als „,“ in de invoer en dit scheidde de OU kolommen uit, maar zoals ik wegens hoe diep OU gaat zei, het veroorzakend enkele andere gegevens d.w.z. UPN, sAMAccountName, LogonTimestamps om in andere kolommen over te brengen.    Om het even welke hulp met dit wordt zeer gewaardeerd.  

Antwoord : VBScript: Het trekken lastLogonTimestamp


Eigenlijk vergt het gebruik van de BU lijst een kleine wijziging om het te verhinderen afschuwelijk onbetrouwbaar zijnd.

Dit is de wijziging:

ForEach ($Name in $BU) {als ($_.DN - pas „OU=$Name aan,“) {$Name}}

Met origineel zou het u aan IT als uw naam dat omvatte, met dit aangepast hebben het slechts zal aanpassen als de volledige OU naam IT is (vandaar de prefix OU= en, het achtervoegsel).

Chris
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
# Vereist Zoektocht CmdLets: http://www.quest.com/powershell/activeroles-server.aspx

# Lijst de bedrijfs van de Eenheid
$BU = „financier“, „Verkoop“, „Op de markt brengend“, „IT“, „Ontwikkeling“

# Het interval tussen data. Deze in de definitieve kolom zal produceren: 0 tot 30; 30 tot 60, enz.
$DateRange = 30

# De Zoektocht CmdLets van het gebruik om de gebruikers te krijgen
Toegelaten krijgen-QADUser - - IncludedProperties lastLogonTimeStamp - SizeLimit 0 | % {
  # Greep op dit voor gemak
  $LastLogon = $_.LastLogonTimeStamp

  # Stel de waarden van IntervalString en van de Multiplicator terug
  # Dateert het begin door te zoeken minder dan 30 oude dagen, verhoogd door 30 op elke pas van de lijn
  $IntervalString = ""; $Multiplier = 1

  Als ($LastLogon - Ne $Null) {
    {
      # Zie of is de openings van een sessiedatum na de gespecificeerde datum
      Als ($LastLogon - GT (krijgen-Datum) .AddDays (- ($DateRange * $Multiplier))) {

        # Registreer deze waarde als „0 tot 30“, of „30 tot 60“, enz.
        $IntervalString = „$ ($DateRange * ($Multiplier - 1)) aan $ ($DateRange * $Multiplier)“
      }

      # Toename de multiplicator
      $Multiplier++

    # Tot het een waarde heeft
    } Terwijl ($IntervalString - eq "")
  } Anders {
    $IntervalString = „N/A“
  }

  # Produceer de output
  $ _ | Uitgezocht-voorwerp DN, UserPrincipalName, DisplayName, LastLogonTimeStamp, WhenCreated,
    @ {n='BusinessUnit'; e= {ForEach ($Name in $BU) {als ($_.DN - pas „OU=$Name aan,“) {$Name}}}},
    @ {n='Range'; e= {$IntervalString}}
# De uitvoer het allen die naar een CSV Lusje gebruiken als afbakening
} | Van uitvoer-CSV de „SomeFile.csv“ - NoTypeInformation - Afbakening `t
Andere oplossingen  
 
programming4us programming4us