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

Printed on: April 24, 2024 at 06:04 o'clock

Member: SaschaRD
SaschaRD Jan 24, 2017 at 15:33:02 (UTC)
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
Member: Robbi666
Robbi666 Jan 24, 2017 at 15:49:05 (UTC)
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... .
Member: Robbi666
Robbi666 Jan 25, 2017 at 13:19:32 (UTC)
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
}
Member: SaschaRD
SaschaRD Jan 26, 2017 updated at 10:18:53 (UTC)
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