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-Key: 1200322315

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

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

Member: chgorges
chgorges Aug 27, 2021 at 08:06:38 (UTC)
Goto Top
Ja, und nu? Deine Erkenntnis ist gut, aber auch nichts neues, sind ja auch zwei unterschiedliche Anwendungen...
Member: em-pie
em-pie Aug 27, 2021 updated at 09:09:09 (UTC)
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
Mitglied: 149062
Solution 149062 Aug 27, 2021 updated at 09:36:15 (UTC)
Goto Top
@echo off
powershell -EP ByPass -noexit -C "Add-Computer -DomainName (Read-Host 'Domainnennamen eingeben') -NewName (Read-Host 'Computername eingeben') -Force -Restart"  
Member: TomTomBon
TomTomBon Aug 27, 2021 at 09:00:48 (UTC)
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.
Member: tobias3355
tobias3355 Aug 27, 2021 at 09:59:00 (UTC)
Goto Top
die version von "evoplus" geht super.
vielen dank.
Mitglied: 149062
149062 Aug 27, 2021 updated at 10:18:02 (UTC)
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.
Member: Kartoffelpelle
Kartoffelpelle Sep 08, 2021 updated at 16:10:03 (UTC)
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