Um springen zu bestimmten stellen im Skript
Gibt es eine Möglichkeit, ein Skript springen an eine bestimmte Stelle wie :GEHE in der Eingabeaufforderung? Ich wollte das script springt an den Anfang, wenn es beendet ist.
$tag1 = Read-Host 'Enter tag #'
cls
sc.exe \\$tag1 start RemoteRegistry
cls
Start-Sleep -s 2
cls
systeminfo /S $tag1 | findstr /B /C:"OS Name" /C:"System Boot Time" /C:"System Up Time";
Get-EventLog system -computername $tag1 -InstanceId 2147489657 -Newest 10 | ft EventID,TimeWritten,MachineName -AutoSize
Pause
- Goto ist böse, verwenden Sie eine andere logische Konstrukte statt. Es klingt wie Sie sind auf der Suche für eine Schleife.
- Beispiele dafür? Ich bin kein pro bei dieser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sehen Sie ein Beispiel mit Ihrem Skript:
Verwenden . anstelle von & im script-block zu verhindern, dass es zu Fuß oben auf dem Aufruf-stack.
Putting-code in den Skript-Blöcken aufgerufen werden später von beliebigen Punkten in dem script (Emulation eines GoTo) ist funktional das gleiche wie eine Funktion, und der script-block in dieser Weise verwendet werden, die manchmal als "anonyme Funktionen".
systeminfo
Zeile können (und sollten) ersetzt werden, mit einer WMI-Abfrage.Es gibt kein goto in PowerShell, und niemand findet es :). Nur wickeln Sie den block von Befehlen in einer Schleife oder so etwas.
Oder versuchen Sie die unten. Sie können die Liste zuweisen von Befehlen zu einer Variablen, und führen Sie Sie mit
&$varname
. Es ist immer noch nicht springen, aber.:start goto start
?Weitere variation auf das Skript mit einigen Ideen, die von @mjolinor. Ich wechselte auch Weg von der Nutzung
systeminfo
weil zumindest auf meinem computer, es ist viel langsamer als die Nutzung der entsprechenden WMI-Abfrage.Ich bin nicht sicher, dass der WMI-Anforderungen remote-registry, so dass Sie vielleicht in der Lage, zu beseitigen die
sc.exe
Linie undsleep
insgesamt. Es sei denn, Sie brauchen es für etwas anderes.get-wmiobject
Methode sollte schneller sein alssysteminfo
und das Ergebnis formatiert ist (die Formatierung dabei viel die "extra" - code).systeminfo
funktioniert, so kann ich nicht sagen. Ich weiß, dass es zieht einen viel mehr Daten. WMI - (und in aktuellen Betriebssystemen, CIM) ist die allgemein anerkannte Praxis in diesen Tagen, vor allem innerhalb der PowerShell.