Dienste über BAT/CMD Datei (neu)starten

NotNerdNotDau schrieb:
Wäre es nicht besser, wenn man als ersten Schritt prüft, ob der Benutzer Angehöriger der Benutzergruppe der Administratoren ist?
Ich habe das Script nicht geschrieben, aber klar macht das Sinn. Ich starte meine Scripte meist per Hand oder mittels Aufgabenplanung, bei letzterem gebe ich immer höhere Rechte.
NotNerdNotDau schrieb:
8. Unsinnige Fehlermeldungen und Hinweise werden unterdrückt.
Unsinnig find ich gut :D
 
  • Gefällt mir
Reaktionen: NotNerdNotDau
NotNerdNotDau schrieb:
PowerShell:
...

1. Das PS-Konsolenfenster wird unterdrückt.

Das hier interessiert mich. Kannst du nochmal erläutern wie du das machst?
Das pure kopieren des Syntax bringt hier nichts, das PS Fenster öffnet sich beim Aufruf eines Scripts.

Ich habe auf einigen Servern Scripte laufen, die alle 5 Minuten für nicht mal eine Sekunde laufen. Aber das ist schon lästig wenn immer wieder das Konsolenfenster aufspringt
 
Art Vandelay schrieb:
Kannst du nochmal erläutern wie du das machst?
Hast du alle Zeilen aus dem Code erwischt?

PowerShell:
Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'
$HideWindow = [Console.Window]::GetConsoleWindow()
[Console.Window]::ShowWindow($HideWindow, 0)

Diese Zeilen gleich an den Anfang des Skripts. Dann poppt das Konsolenfenster für den Bruchteil einer Sekunde auf und verschwindet dann.

Noch eine andere Variante:

PowerShell:
$ShowWindowAsync = Add-Type -MemberDefinition @'
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
'@ -Name 'Win32ShowWindowAsync' -Namespace Win32Functions –PassThru

[Void]$ShowWindowAsync::ShowWindowAsync((Get-Process –Id $PID).MainWindowHandle, 0)

Etwas ausführlicher, mit den unterschiedlichen Optionen:

PowerShell:
Add-Type -Name ConsoleUtils -Namespace WPIA -MemberDefinition @'
   [DllImport("Kernel32.dll")]
   public static extern IntPtr GetConsoleWindow();
   [DllImport("user32.dll")]
   public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'@

$ConsoleMode = @{
 HIDDEN = 0;
 NORMAL = 1;
 MINIMIZED = 2;
 MAXIMIZED = 3;
 SHOW = 5
 RESTORE = 9
 }

$hWnd = [WPIA.ConsoleUtils]::GetConsoleWindow()

$a = [WPIA.ConsoleUtils]::ShowWindow($hWnd, $ConsoleMode.MAXIMIZED)
"maximized $a"
Start-Sleep 2
$a = [WPIA.ConsoleUtils]::ShowWindow($hWnd, $ConsoleMode.NORMAL)
"normal $a"
Start-Sleep 2
$a = [WPIA.ConsoleUtils]::ShowWindow($hWnd, $ConsoleMode.MINIMIZED)
"minimized $a"
Start-Sleep 2
$a = [WPIA.ConsoleUtils]::ShowWindow($hWnd, $ConsoleMode.RESTORE)
"restore $a"
Start-Sleep 2
$a = [WPIA.ConsoleUtils]::ShowWindow($hWnd, $ConsoleMode.HIDDEN)
"hidden $a"
Start-Sleep 2
$a = [WPIA.ConsoleUtils]::ShowWindow($hWnd, $ConsoleMode.SHOW)
"show $a"
 
Zurück
Oben