7

Mam dwa serwery:Jak zdalne wykonanie podwyższonej zdalnego skryptu PowerShell

  • Servera (windows 2003 server)
  • ServerB (Windows 7)

ServerA zawiera folder z plikiem wsadowym (deploy.bat), który musi zostać wykonany z poziomu zachęty z podwyższonym poziomem uprawnień. W przypadku ServerA, jeśli uruchomię go z normalnego monitu lub z wiersza polecenia powłoki, nie powiedzie się. Jeśli uruchomię go z podniesionego monitu, działa. (Uruchom jako administrator).

Problem polegający na tym, że próbuję wykonać plik wsadowy z serverB przy użyciu zdalnego wykonywania powłoki. Jestem w stanie wykonać z tym poleceniem:

Invoke-Command -computername serverA .\remotedeploy.ps1 

Zawartość remotedeploy.ps1 jest:

cd D:\Builds\build5 
.\Deploy.bat 

Mam wyglądał pytania LOT stackoverflow about:

  • Execute zdalna powłoka (działa to dla mnie)
  • Wykonaj lokalny pakiet uprawnień z podniesionym monitem (mogę to zrobić)

To pytanie dotyczy zarówno w tym samym czasie. Dokładne pytanie brzmi:

Czy można wykonać skrypt ELEVATED REMOTE w PowerShell?

Odpowiedz

1

Czy starasz się zmienić remoteDeploy.ps1 zacząć CMD.EXE z podwyższonych uprawnień:

cd D:\Builds\build5 
start-process CMD.EXE -verb runas -argumentlist "-C",".\Deploy.bat" 
+0

Myślę, że próbowałem tego, ale poprosił mnie o hasło (nie opcji, jak potrzebuję go uruchomić w skrypcie budowania) i wydaje się, że nie ma opcji na wprowadzenie hasła. Spróbuję jeszcze raz, aby się upewnić. –

+0

To nie działa. Podczas wykonywania go lokalnie, formularz okna zapyta mnie o pozwolenie, a kiedy go zdalnie wykonam, zamarza z powodu tego samego okna formularza, jak sądzę. –

+1

Wydaje się, że działa na mnie, ale używam prawdziwych danych logowania administratora, kiedy tworzę PSSession. – JPBlanc

1

Jeśli używasz PowerShell 4, można wykonać polecenie używając pożądanej konfiguracji państwa, które poruszają się jak SYSTEM:

Invoke-Command -ComputerName ServerA -ScriptBlock { 
    configuration DeployBat 
    { 
     # DSC throws weird errors when run in strict mode. Make sure it is turned off. 
     Set-StrictMode -Off 

     # We have to specify what computers/nodes to run on. 
     Node localhost 
     { 
      Script 'Deploy.bat' 
      { 
       # Code you want to run goes in this script block 
       SetScript = { 
        Set-Location 'D:\Builds\build5' 
        # DSC doesn't show STDOUT, so pipe it to the verbose stream 
        .\Deploy.bat | Write-Verbose 
       } 

       # Return $false otherwise SetScript block won't run. 
       TestScript = { return $false } 

       # This must returns a hashtable with a 'Result' key/value. 
       GetScript = { return @{ 'Result' = 'RUN' } } 
      } 
     } 
    } 

    # Create the configuration .mof files to run, which are output to 
    # 'DeployBot\NODE_NAME.mof' directory/files in the current directory. The default 
    # directory when remoting is C:\Users\USERNAME\Documents. 
    DeployBat 

    # Run the configuration we just created. They are run against each NODE. Using the 
    # -Verbose switch because DSC doesn't show STDOUT so our resources pipes it to the 
    # verbose stream. 
    Start-DscConfiguration -Wait -Path .\DeployBat -Verbose 
}