robbi666
Goto Top

Powershell Import Computer aus csv in array und Befehl abarbeiten

Hallo zusammen,

ich möchte gerne aus einer Liste von Computern mehrere Dinge überprüfen.

$Computername = "Computername"

if(Test-Connection -ComputerName $Computername)
{


if(Get-service -name "ACMP Client" -ErrorAction SilentlyContinue)

{ Stop-Service "ACMP Client"
(Get-Content -Path "\\$Computername\C$\Program Files (x86)\ACMPClient\Client.ini") |
ForEach-Object {$_ -Replace "SERVERNAME.domäne.intra", "ACMPSRV.domäne.intra"} |
Set-Content -Path "\\SERVERNAME\C$\Program Files (x86)\ACMPClient\Client.ini"
Start-Service "ACMP Client"
}

else
{Write-Output "$Computername" | Out-File C:\NoAcmp.csv}
}
else{ echo "Verbindung nicht möglich"}


So würde es nur für einen Computer funktionieren. Ich möchte mir aber immer je einen Rechner aus einer csv ziehen und dort diese Dinge überprüfen. Danach soll der PC aus der nächsten Zeile genommen und überprüft werden. Ich denke da an eine foreach Schleife oder einen Array.

Denke ich zu kompliziert oder habt Ihr eine Idee?

Content-Key: 327327

Url: https://administrator.de/contentid/327327

Ausgedruckt am: 19.03.2024 um 10:03 Uhr

Mitglied: SaschaRD
SaschaRD 24.01.2017 um 16:33:02 Uhr
Goto Top
Hallo @Robbi666,

bei einem Import-CSV wird bereits ein Array erzeugt.

Je nachdem wie deine CSV-Datei aussieht, etwas filtern und mit einem foreach
foreach ($was in $aus){
hier wirds gemacht
}
das durchlaufen, was Du realisieren möchtest.

Gruß, Sascha
Mitglied: Robbi666
Robbi666 24.01.2017 um 16:49:05 Uhr
Goto Top
Meine csv sieht so aus:

A
1 Computername 1
2 Computername 2
3 Computername 3
4 Computername 4
5 Computername 5
6 Computername 6

Die Computernamen sind verschieden. ich suche nichts bestimmtes sondern möchte mir aus der csv einen Computer rausnehmen, abarbeiten und den nächsten rausziehen, abarbeiten... .
Mitglied: Robbi666
Robbi666 25.01.2017 um 14:19:32 Uhr
Goto Top
Ich habe es jetzt hinbekommen. Der ganze Befehl muss in eine foreach Schleife siehe hier:

foreach($computer in get-content c:\computer.txt) <#Aus Text-Datei lesen#>
{
der Befehl der ausgeführt werden soll
}
Mitglied: SaschaRD
SaschaRD 26.01.2017 aktualisiert um 11:18:53 Uhr
Goto Top
Hallo @Robbi666,

jetzt machst Du ja ein GC auf eine Textdatei, wolltest Du nicht eine .csv-Datei verwenden?
Hier ein Quick&Dirty Beispiel:
Die .csv-Datei, dort sind enthalten Computername und die IP-Adresse, die Werte sind mit KOMMA "," von einander getrennt.
Computername, IP-Adresse <= Header
Dieter0815, 192.168.1.11
Heidi4715, 192.168.1.12
Heidi4815, 192.168.1.13
Rambazamba, 192.168.1.14
Kalle, 192.168.1.15

Mit dem Modul Import-csv kannst Du deine Anfrage über Powershell realisieren.
Import-CSV C:\Scripts\import_pcs.csv | %{$_."Computername"}  
Somit werden Dir aus der .csv-Datei nur die Computernamen ausgegeben, in die ForEach-Schleife % kannst Du dann noch einbauen was gemacht werden soll.

Gruß, Sascha