Ciao,
la logica con cui gestire il recupero dei server remoti e delle schedulazioni da testare varia a seconda del formato che sceglierai per il file: Get-Content è il cmdlet giusto con cui iniziare!
Supponendo, ad esempio, di avere un file di testo con valori separati da virgola, come questo:
SERVER1,Task1
SERVER1,Task2
SERVER2,Task3
Potresti recuperare macchina (prima colonna) e nome del task (seconda) così:
Get-Content .\Configurazione.txt |
ForEach-Object {
# Effettua lo split della riga corrente utilizzando il carattere separatore scelto (,)
$cells = ($_ -split ',')
# $cells[0] è il nome della macchina
# $cells[1] è il nome del task
# ...
$cells[0]
}
Per il resto, invece, vorrei fare qualche considerazione e condividerla con il resto dei frequentatori del forum:
- Non ho controllato su MSDN ma credo che l'oggetto COM Schedule.Service utilizzi il protocollo DCOM/RPC per comunicare con altre macchine. Questo protocollo è difficile da configurare e, in generale, non è firewall-friendly. Se hai la possibilità di utilizzare PowerShell 2.0 ti consiglierei di impiegare PowerShell Remoting (capitolo 27 del mio libro), che supporta HTTP/HTTPS ed è estremamente più firewall-friendly. ;)
- Se non ti serve tenere traccia del valore di
LastTaskResult nei tuoi file di log puoi risparmiarti un po' di complessità nello script (perchè usare Select-String, ad esempio?):
$finale = $schedgiusta.LastTaskResult
# ...
if ($finale -eq 0) {
# ...
}
- Se vuoi recuperare i dati da più macchine in parallelo ti conviene approfondire l'argomento job in background (trovi anche questo nel mio libro, capitolo 26).
Grazie per i complimenti, mi fa davvero piacere che il mio libro vi sia utile. :)
Ciao!