Funktion in Skript ausführen
Moin zusammen,
ich wandle nun seit ein paar Wochen alte Batch-Skripte nach PowerShell um und hänge nun seit einigen Stunden an einem kleinen Problem. Bin also Anfänger in Sachen PowerShell und egal was ich zu meinem Problem gelesen und ausprobiert habe...es will nicht so wie ich will.
Im Skript soll eine Funktion genutzt werden, aber egal wie ich es anstelle, entweder wirft es mir Fehlermeldungen
aus oder der Befehl wird einfach nur als Text dahin geschrieben ohne die Funktion aufzurufen.
So sieht der entsprechende Teil dazu aus, die Pause unten ist nur da, um zu sehen ob es geht oder nicht und wird weiter nach unten wandern bis alles da ist.
Ich danke schonmal und wünsche einen guten Start in die Woche
Gruß
Itchley
ich wandle nun seit ein paar Wochen alte Batch-Skripte nach PowerShell um und hänge nun seit einigen Stunden an einem kleinen Problem. Bin also Anfänger in Sachen PowerShell und egal was ich zu meinem Problem gelesen und ausprobiert habe...es will nicht so wie ich will.
Im Skript soll eine Funktion genutzt werden, aber egal wie ich es anstelle, entweder wirft es mir Fehlermeldungen
& : Die Benennung "C:\Dokuwerkzeug\conf\SnmpWalk.exe -r:12 -t:1 -v:2c -c:divis -o:.1.3.6.1.2.1.1.1.0" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt.
Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In D:\Dropbox\DIVIS\Entwicklung Dokuvorlage\Dokupowerwerkzeug\Werkzeug.ps1:724 Zeichen:6
+ &$WalkBefehl
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Dokuwerkzeug...3.6.1.2.1.1.1.0:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
So sieht der entsprechende Teil dazu aus, die Pause unten ist nur da, um zu sehen ob es geht oder nicht und wird weiter nach unten wandern bis alles da ist.
$Walk = "C:\Dokuwerkzeug\conf\SnmpWalk.exe"
$Walk_Typ = "-o:.1.3.6.1.2.1.1.1.0"
$WalkIP = "-r:"
$WalkWartezeit = "-t:1"
$WalkVersion = "-v:2c"
$WalkCommunity = "-c:sivid"
$Kunde = Read-Host -Prompt $151
do{
$Sp0rt = Read-Host -Prompt $152
}while(!(Test-Path $Sp0rt))
do{
## _____________________________________________________________________________________________ Suche nach der Portbelegung
$WalkBefehl = "$Walk $WalkIP$Netzbereich$Start $WalkWartezeit $WalkVersion $WalkCommunity $Walk_Typ"
&$WalkBefehl
pause
}until ($Ende -lt $Start)
Ich danke schonmal und wünsche einen guten Start in die Woche
Gruß
Itchley
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7651702834
Url: https://administrator.de/forum/funktion-in-skript-ausfuehren-7651702834.html
Ausgedruckt am: 04.04.2025 um 05:04 Uhr
6 Kommentare
Neuester Kommentar

Moin.
Nee das geht so nicht, ausgeführt wird ja erst mal nur der Befehl/die Exe selbst wie in der CMD auch, wenn du alles inklusive Parameter in Anführungszeichen setzt sucht er nach einer ausführbaren Datei mit all den Parametern, die er verständlicherweise nicht finden kann. Ist übrigens in der CMD genauso, wenn du da auch die Parameter in den Anführungszeichen inkludierst wirft er dir auch den selben Fehler wie du hier sehen kannst.
Was geht sind folgende Varianten
Oder mit Start-Process
Wobei man bei Start-Process die einzelnen Parameter als Alternative auch als Array übergeben kann, statt als einen einzigen String.
p.s. "pause" ist kein nativer Powershell-Befehl, der geht zwar auch in der PS, wenn du aber wirklich nach natives Powershell ohne CMD-Reste übersetzen willst, nimmst du stattdessen Read-Host oder
Zeppel
Nee das geht so nicht, ausgeführt wird ja erst mal nur der Befehl/die Exe selbst wie in der CMD auch, wenn du alles inklusive Parameter in Anführungszeichen setzt sucht er nach einer ausführbaren Datei mit all den Parametern, die er verständlicherweise nicht finden kann. Ist übrigens in der CMD genauso, wenn du da auch die Parameter in den Anführungszeichen inkludierst wirft er dir auch den selben Fehler wie du hier sehen kannst.
Was geht sind folgende Varianten
&"C:\Dokuwerkzeug\conf\SnmpWalk.exe" "-r:12" "-t:1" "-v:2c" "-c:divis" "-o:.1.3.6.1.2.1.1.1.0"
Start-Process "cmd.exe" -Argumentlist "/c `"C:\Dokuwerkzeug\conf\SnmpWalk.exe`" -r:12 -t:1 -v:2c -c:divis -o:.1.3.6.1.2.1.1.1.0" -wait
p.s. "pause" ist kein nativer Powershell-Befehl, der geht zwar auch in der PS, wenn du aber wirklich nach natives Powershell ohne CMD-Reste übersetzen willst, nimmst du stattdessen Read-Host oder
[void][console]::ReadKey()
(Achtung, letzteres funktioniert nicht in der ISE da dort kein Console-Host läuft).Zeppel

Zitat von @Itchley:
Bei der Funktion Start-Process startet die PS die exe komplett, funktioniert also nicht so wie gewünscht.
Hatte das noch nachträglich korrigiert, muss natürlich an den cmd Interpreter übergeben werden, dann klappt das auch, sorry.Bei der Funktion Start-Process startet die PS die exe komplett, funktioniert also nicht so wie gewünscht.
Zitat von @Itchley:
Die ISE wurde mir letzte Woche schon für nicht so gut erklärt, nutze daher nur noch Notepad++
sieh dir mal Visual Studio Code an. Mit installierter PS-Sprachunterstützung hilft die Software aktiv beim sauberen Coden.Die ISE wurde mir letzte Woche schon für nicht so gut erklärt, nutze daher nur noch Notepad++
Moin,
. Imho sind die Shortcuts bei N++ aber deutlich besser und beschleunigen das Skripten enorm.
Der einzige wirkliche Vorteil den VS Code bringt, ist das Debuggen mittels Breakpoints (sofern man dies bei einer Skriptsprache denn benötigt).
Just my 2 cents.
Gruß Thomas
Zitat von @Kraemer:
Das macht Notepad++ auch Zitat von @Itchley:
Die ISE wurde mir letzte Woche schon für nicht so gut erklärt, nutze daher nur noch Notepad++
sieh dir mal Visual Studio Code an. Mit installierter PS-Sprachunterstützung hilft die Software aktiv beim sauberen Coden.Die ISE wurde mir letzte Woche schon für nicht so gut erklärt, nutze daher nur noch Notepad++
Der einzige wirkliche Vorteil den VS Code bringt, ist das Debuggen mittels Breakpoints (sofern man dies bei einer Skriptsprache denn benötigt).
Just my 2 cents.
Gruß Thomas