tobias3355
Goto Top

Powershell Befehl in einer Batch ausführen

Hallo zusammen,

ich habe eine Batchdatei in der ich Powershell Befehle ausführen möchte.
Leider funktioniert das nicht wie gewünscht. Wenn ich die Befehle in einer separaten *.ps1 Datei speicher, funktioniert das.

@echo off

powershell -Executionpolicy ByPass -noexit -Command $name = Read-Host -Prompt 'Computername eingeben '  
powershell -Executionpolicy ByPass -noexit -Command $dom = Read-Host -Prompt 'Dom„nennamen eingeben '  
powershell -Executionpolicy ByPass -noexit -Command Add-Computer -DomainName $dom -NewName $name -Force -Restart

Content-ID: 1200322315

Url: https://administrator.de/forum/powershell-befehl-in-einer-batch-ausfuehren-1200322315.html

Ausgedruckt am: 22.12.2024 um 16:12 Uhr

chgorges
chgorges 27.08.2021 um 10:06:38 Uhr
Goto Top
Ja, und nu? Deine Erkenntnis ist gut, aber auch nichts neues, sind ja auch zwei unterschiedliche Anwendungen...
em-pie
em-pie 27.08.2021 aktualisiert um 11:09:09 Uhr
Goto Top
Moin,

works as designed!

Zeil 1: du startest die Powershell, definierst die Variable $name und schließt die Powershell wieder - die Daten sind alle weg
Zeil 2: du startest die Powershell, definierst die Variable $dom und schließt die Powershell wieder - die Daten sind alle weg
Zeil 3: du startest die Powershell, willst auf Variablen zugreifen, die es nicht (mehr) gibt und schließt die Powershell - nichts passiert.

erstelle entweder ALLES in einer *.ps1 oder ALLES in Batch. Tipp: Nimm ersteres face-wink

Gruß
em-pie

Edit: etwas Typo face-smile
149062
Lösung 149062 27.08.2021 aktualisiert um 11:36:15 Uhr
Goto Top
@echo off
powershell -EP ByPass -noexit -C "Add-Computer -DomainName (Read-Host 'Domainnennamen eingeben') -NewName (Read-Host 'Computername eingeben') -Force -Restart"  
TomTomBon
TomTomBon 27.08.2021 um 11:00:48 Uhr
Goto Top
Moin Moin

em-pie hat recht.
Du BIST in der CMD Umgebung.
Dann wechselst du in die Powershell Umgebung.
Dort kannst du Sachen Machen und auch definieren.
Aber die Variablen worein Du schreibst müssen vorher vorhanden sein.
Es sind unterschiedliche Umgebungen die nur sehr wenig miteinander zu tun haben.

Ich bin zwar auch mehr in der CMD Umgebung gehaftet, Aber bisher sehe Ich keinerlei Argument nicht bei PS zu bleiben.
tobias3355
tobias3355 27.08.2021 um 11:59:00 Uhr
Goto Top
die version von "evoplus" geht super.
vielen dank.
149062
149062 27.08.2021 aktualisiert um 12:18:02 Uhr
Goto Top
Willst du mehrere Codezeilen zusamnenfassen trenne diese mittels Semikolon (;) voneinander. Alternativ kann man auch Zeilenumbrüche in ner Batch verwenden, muss diese dann aber mit ^ escapen usw, alles nicht sehr schön, besser gleich endlich auf reine ps1 umsteigen.
Kartoffelpelle
Kartoffelpelle 08.09.2021 aktualisiert um 18:10:03 Uhr
Goto Top
Eventuell auch so:

@echo off

echo Computername eingeben & set /p "name="  
echo Domainnennamen eingeben & set /p "dom="  
powershell -Executionpolicy ByPass -noexit -Command Add-Computer -DomainName %dom% -NewName %name% -Force -Restart