2016-07-18 2 views
0

Ich versuche ein Powershell-Skript für FSRM zu erstellen, das Berichte für jedes Laufwerk erstellt. Ich versuche, den Endbenutzer zu fragen, wie viele Laufwerke sie überwachen möchten, dann folgt eine Nachverfolgung des Laufwerksbuchstabens, es wird dann ein Bericht pro Laufwerksbuchstabe erstellt, aber ich bleibe bei der Erstellung der Array - Größe und bekomme die Informationen in das Array gefolgt von dem Anhalten der Berichterstellung, wenn sie allePowershell: Wie man ein Benutzerarray benutzt, durchläuft es und schließt dann am Ende

#Asks user for how many disks they want to have reports created for them 
$Localdisks = $Null 
#Sets Array size for local disk 
$Localdiskarraynumber = @($localdiskarray) 
#Counts how many items are in the array to how many have been applied 
$localdiskarraysize = $Localdiskarray.count 
#Set Size of array 
$Localdiskarray = Read-Host -Prompt 'Input the amount of local disks you want to run reports on' 
#Set report Name (report per disk) 
$Reportname = "$env:computername-$localdisk-Report" 
#Ask users for storage report email address 
$EmailReport = Read-Host -Prompt 'Input your Email address for Reports:' 
#Sets time for report 
$d = get-date "08:30am" 
#Sets day for report/weekly 
$task = New-FsrmScheduledTask -Time $d -Weekly @("Monday") 
Do 
{ 
$localdisks = Read-Host -Prompt 'Disk Letter' 
#report created per letter entered 
New-FsrmStorageReport -Name $Reportname -Namespace "$Localdisks:\" -Schedule $task -ReportType @("LargeFiles", "DuplicateFiles", "FilesByFileGroup", "FilesByOwner", "LeastRecentlyAccessed", "MostRecentlyAccessed") -LargeFileMinimum 500MB -FileGroupIncluded @("Virus FileTypes", "3D FileTypes", "Archive File Types", "Audio FileTypes", "Database FileTypes", "Disk FileTypes", "Executables FileTypes", "Font FileTypes", "Image FileTypes", "MS Office FileTypes", "Office FileTypes", "Suspicious FileTypes", "Video FileTypes") -LeastAccessedMinimum 90 -MostAccessedMaximum 91 -MailTo $EmailReport 
} 
#Stops Do when full cycle through of the array is complete 
until ($localdiskarraysize = $Localdisks) 
+0

Wenn Sie den Benutzer fragen, wie viele Laufwerke er überwachen möchte, gibt es eine Liste der Laufwerke? Ich glaube nicht, dass ich verstehe, wie das funktionieren könnte. – FoxDeploy

+0

Sie referenzieren Variablen, die hier nie definiert sind, gibt es mehr zum Skript? Was die eigentliche Schleife betrifft, würde ich etwas wie 'For ($ i = 0; $ i -le $ localdiskarray; $ i ++) {... mach mal ...}' machen – TheMadTechnician

Antwort

1

im getan versuchen, den Endbenutzer zu fragen, wie viele Laufwerke sie wollen, dann folgen der Laufwerksbuchstabe a überwachen wird dann einen Bericht pro Laufwerksbuchstaben jedoch im stecken erstellen beim Erstellen der Array-Größe und beim Abrufen der Informationen in das Array, gefolgt von einem Stoppen der Erstellung des Berichts, wenn alle fertig sind

Dies ist sehr un-PowerShelly Design. Fragen Sie den Benutzer nach Laufwerken, bis sie nicht mehr eingeben. Es gibt kein wirkliches Konzept, ein Array mit einer bestimmten Größe zu erstellen (ich denke, du könntest einen Weg finden, es zu tun, aber es ist nicht üblich oder wirklich relevant hier).

So etwas wie

# Keep prompting for another drive until they just press enter 
$drives = do 
{ 
    $drive = Read-Host "Enter another drive, or blank to finish" 
    $drive 
} while ($drive -ne '') 

# Loop over the drives and generate a report for each one 
foreach ($drive in $drives) 
{ 
    # process drive here 
} 

Dann brauchen Sie nicht durch sie zu zählen, sie entweder zu verwenden.


NB. wo Sie versuchen, hier durch sie zu zählen:

until ($localdiskarraysize = $Localdisks) 

Die = in Powershell ist nur für die Zuordnung von Werten ($a = 1), zu testen, ob zwei Dinge gleich sind, müssen Sie -eq verwenden.

Verwandte Themen