Domanda Risolto Verificare la presenza di un file in una lista di pc - Powershell

Shini°

Utente Emerald
26 Febbraio 2009
554
60
184
440
Ultima modifica da un moderatore:
Ciao,

avrei bisogno di verificare se in una lista di computer sia presente un determinato file ed eventualmente mostrare un output del tipo:

se in "path" è presente "questo file"
output è "File presente"

se in "path" non è presente "questo file"
output è "File non presente"


Preferibilmente in Powershell ma se conoscete altri strumenti sono ben accetti!

Grazie per i suggerimenti!!
 
Che intendi per una lista di computer? E cosa usi per accedervi, questo script va forse eseguito dall'amministratore di un dominio Windows enterprise?
 
Ultima modifica:
In powershell potrebbe essere qualcosa del genere:
Codice:
$pcs = @("192.168.1.2", "192.168.1.3")
$path = "C$\ciao.txt"
foreach ($pc in $pcs)
{
    $exists = [System.IO.File]::Exists("\\" + $pc + "\" + $path)
    $log = "On " + $pc + " exists: " + $exists
    Write-Output $log
}

Esempio di output:
Codice:
On 192.168.1.2 exists: True
On 192.168.1.3 exists: False

è quello che cercavi?
 
In powershell potrebbe essere qualcosa del genere:
Codice:
$pcs = @("192.168.1.2", "192.168.1.3")
$path = "C$\ciao.txt"
foreach ($pc in $pcs)
{
    $exists = [System.IO.File]::Exists("\\" + $pc + "\" + $path)
    $log = "On " + $pc + " exists: " + $exists
    Write-Output $log
}

Esempio di output:
Codice:
On 192.168.1.2 exists: True
On 192.168.1.3 exists: False

è quello che cercavi?
Come non amarti!
Dalla sintassi sembra proprio ciò che fa al caso mio!
Domani farò dei test.. grazie intanto :)
 
Non sarebbe più comodo inserire gli IP in un txt e leggerli con un ciclo for? almeno così non devi modificare lo script, basterebbe modificare il txt con gli indirizzi.
 
Non saprei se in quel modo legge tutto il contenuto del file o lo legge riga per riga, che è quello che serve a te.
Lascio la parola a chi ne sa più di me di powershell.
 
Potresti fare:

Codice:
$pcs = Get-Content .\file.txt

Oppure potresti prendere tutto da parametro:

Codice:
param($Source, $Path)

$pcs = Get-Content $Source
foreach ($pc in $pcs)
{
    $exists = [System.IO.File]::Exists("\\" + $pc + "\" + $Path)
    $log = "On " + $pc + " exists: " + $exists
    Write-Output $log
}

Es: .\script.ps1 -Source .\file_ip.txt -Path "C$\ciao.txt"

Occhio a non lasciare righe vuote nel file, altrimenti aggiungi un check prima della verifica.
 
  • Geniale
Reazioni: Shini°