2017-07-10 5 views
1

Ich habe eine sehr seltsame Sache passiert.Powershell nimmt viel Zeit in Anspruch, wenn es aus dem Batch aufgerufen wird?

Wenn ich powershell.exe laufen, dann im Fenster geben Sie folgenden Befehl ein:

Measure-Command {Get-ADPrincipalGroupMembership abc00 | select "name" | out-gridview } 

der Befehl ist super schnell und dauert etwa 2 Sekunden.

Nun, wenn ich laufe genau die gleiche Sache aus einer Batch-Datei (, die eine einfache Auswahlmenü enthält) wie folgt:

powershell.exe -command "Measure-Command {Get-ADPrincipalGroupMembership abc00 | select "name" | out-gridview} 

es eine Keuchhusten 15 Sekunden dauert, so dass der Befehl sehr schwer und lästig benutzen.

Warum ist es so langsam? Könnte es der CHOICE-Befehl oder etwas sein? Weil, wenn ich es in einem leeren test.bat laufen dann ist es super schnell ...:

powershell.exe -command "Measure-Command {Get-ADPrincipalGroupMembership abc00 | select "name" | out-gridview} 

P. S .: Alle anderen Befehle in meine Batchdatei sind schnell mit Ausnahme der Powershell diejenigen.

Vielen Dank für Ihre Zeit und Hilfe wie immer.

UPDATE: Ich habe versucht, das Auswahlmenü vollständig zu entfernen und es durch ein Set/P-Menü zu ersetzen und es dauert immer noch ewig zu laden ... Was für ein seltsames Problem.

+0

Ich empfehle, mit Batch-Dateien vollständig Abgabe- und nur Powershell verwenden. –

+1

Ich würde "-NoProfile" oder kurz "-NoP" nach 'powershell.exe -NoP' einfügen und Powershell ohne eine temporäre vbs-Datei verwenden, um zu erhöhen. Siehe meine Antwort. – LotPings

Antwort

1

Ich benutze diese Partie für
erhebend (BTW eine andere Antwort eine andere Frage zu stellen ist Thema ein bisschen ahemm off)

::ElevateMe.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
@echo off & setlocal EnableExtensions DisableDelayedExpansion 
net file 1>nul 2>&1 || (powershell -NoP -NoL -Ex unrestricted -Command^
"Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c %~f0 %*'" 
    goto :eof) 
:: Put code here that needs elevation 
+0

Verstanden, ich habe meine Antwort bearbeitet;) Dieser Code funktioniert zum Erhöhen und verursacht keine Verlangsamung von Powershell-Befehlen, danke A LOT. Haben Sie einen guten Tag. – Rakha

0

Seltsamerweise habe ich den Schuldigen gefunden. Ich hatte eine Portion oben in meiner Batch-Datei, um sicherzustellen, dass sie beim Öffnen automatisch als Administrator ausgeführt wird, und das macht Powershell-Befehle langsamer als Hölle! Nach dem Entfernen laufen die Powershell-Befehle super schnell.

Das war der Code, der mir im Allgemeinen sehr nützlich ist, aber jetzt, da ich es fand, verlangsamt sich Powershell ... nicht so sehr.

REM --> Check for permissions 
    "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system">nul 2>NUL 

    REM --> If error flag set, we do not have admin. 
    if '%errorlevel%' NEQ '0' (
     echo Requesting administrative privileges... 
     goto UACPrompt 
    ) else (goto gotAdmin) 

    :UACPrompt 
     if exist "%temp%\getadmin.vbs" (
      del "%temp%\getadmin.vbs" 
      echo Failed to acquire elevated privilege. Try saving this script and running it from your Desktop. 
      echo; 
      echo Press any key to exit. 
      pause>NUL 
      goto :EOF 
     ) 
     echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
     echo UAC.ShellExecute "%~s0", "%*", "", "runas", 1 >> "%temp%\getadmin.vbs" 

     cscript /nologo "%temp%\getadmin.vbs" 
     goto :EOF 

    :gotAdmin 
     if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs") 
:-------------------------------------- 
Verwandte Themen