Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[PowerShell] *.BAT en PowerShell code in 1 file

Pagina: 1
Acties:

Vraag


  • Dwazer
  • Registratie: april 2000
  • Laatst online: 25-06 12:25
Voor een projectje ben ik bezig met het maken van een PowerShell script om e.e.a. te automatiseren (toevoegen van ODBC koppelingen in het register, hostname info, enz.) :)

Scriptje gemaakt in PowerShell, menutje erin gebakken, getest: Prima.

Mits deze op:
code:
1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
staat...

En daarvoor moet ik PowerShell eerst apart starten. Onhandig dacht ik, want wil 1 file aanklikken en dan ermee aan het werk kunnen.

Dus even zoeken en vond deze terug:
code:
1
2
3
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v "ExecutionPolicy" /t REG_SZ /d "RemoteSigned" /f
pause
PowerShell -File .\PowerShell_Bestand.ps1

In een *.BAT file geplaatst en klaar.

En daar zit de vraag eigenlijk in:

Heb nu 2 files die ik steeds bij elkaar moet houden voor de werking ervan. Is het mogelijk om vanuit die *.BAT file, de PowerShell commands aan te roepen i.p.v. twee files steeds met elkaar mee te moeten verhuizen? Wellicht in een *.EXE bakken ofzo?

Zag ook een aantal opties zoals de -Invoke, -Unrestricted of een echo pipen naar het *.ps1 bestand (Bron), maar dan heb ik PowerShell zelf alweer geopend en zou ik net zo goed de ExecutionPolicy kunnen uitvoeren...

Thanks! _/-\o_

P.s.: Programming level = N00bie :$

Alle reacties


  • Oogje
  • Registratie: oktober 2003
  • Niet online
Je zou de Execution-Policy kunnen zetten in een GPO voor de betreffende systemen.

Any errors in spelling, tact, or fact are transmission errors.


  • Dwazer
  • Registratie: april 2000
  • Laatst online: 25-06 12:25
Oogje schreef op vrijdag 24 juni 2016 @ 18:13:
Je zou de Execution-Policy kunnen zetten in een GPO voor de betreffende systemen.
Goeie inderdaad, had ik ook aan zitten denken d:)b

Maar heb in diezelfde file ook staan dat ie de regkey weer verwijderd (opschonen van o.a. variabelen en gemaakte regkeys t.b.v. het script).

Wil ermee voorkomen dat gebruikers argeloos PowerShell scripts aanklikken online en deze uitvoeren (en door die rule weer te verwijderen moet er een stap extra tussen voor de gebruiker) :)

  • downtime
  • Registratie: januari 2000
  • Niet online

downtime

Everybody lies

Dwazer schreef op vrijdag 24 juni 2016 @ 18:16:
Wil ermee voorkomen dat gebruikers argeloos PowerShell scripts aanklikken online en deze uitvoeren (en door die rule weer te verwijderen moet er een stap extra tussen voor de gebruiker) :)
Dan gewoon Powershell scripts signen en via GPO alleen nog maar signed scripts toestaan.

Overigens, als je file associations op default staan, kun je niet zomaar PS scripts uitvoeren door erop te klikken.

Acties:
  • +1Henk 'm!

  • Killah_Priest
  • Registratie: augustus 2001
  • Laatst online: 07-07 21:57
Hoe trap je de scripts af? Powershell is namelijk te starten met de optie –ExecutionPolicy Bypass waarmee je de executionpolicy omzeilt.

  • Dwazer
  • Registratie: april 2000
  • Laatst online: 25-06 12:25
Killah_Priest schreef op vrijdag 24 juni 2016 @ 19:26:
Hoe trap je de scripts af? Powershell is namelijk te starten met de optie –ExecutionPolicy Bypass waarmee je de executionpolicy omzeilt.
Ik trap het script af via die *.bat file:
code:
1
2
3
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v "ExecutionPolicy" /t REG_SZ /d "RemoteSigned" /f
pause
PowerShell -File .\PowerShell_Bestand.ps1


Met die REG ADD voeg ik een regkey toe die de ExeuctionPolicy op RemoteSigned zet. Dus die execution limitation is niet het probleem.

Het probleem zit em erin dat ik nu 2 files heb en deze 2 wil samenvoegen tot 1 bestand :)

  • downtime
  • Registratie: januari 2000
  • Niet online

downtime

Everybody lies

Dwazer schreef op vrijdag 24 juni 2016 @ 22:13:
Het probleem zit em erin dat ik nu 2 files heb en deze 2 wil samenvoegen tot 1 bestand :)
Waarom negeer je de oplossing van Killah_Priest nu?

  • Dwazer
  • Registratie: april 2000
  • Laatst online: 25-06 12:25
downtime schreef op vrijdag 24 juni 2016 @ 22:18:
[...]

Waarom negeer je de oplossing van Killah_Priest nu?
Leg uit, want misschien snap ik het niet... :)

  • downtime
  • Registratie: januari 2000
  • Niet online

downtime

Everybody lies

Dwazer schreef op vrijdag 24 juni 2016 @ 22:24:
[...]

Leg uit, want misschien snap ik het niet... :)
Hij legt toch al uit hoe je ze kunt samenvoegen?

  • johnkeates
  • Registratie: februari 2008
  • Laatst online: 10:40
BAT file maken die een check heeft om te kijken of ie in PowerShell draait, zo nee: start zichzelf opnieuw via PowerShell + Execution Policy, zo ja: kijk of de policy goed staat en geef anders een foutmelding.

En anders gewoon ondertekenen, problem solved. Je kan ook met een 'goed' configuratie management systeem werken, dan heb je dat gezeur niet :p GPO kan wat, SCCM kan dingen, SaltStack kan alles, Puppet kan het meeste ook wel. En er is Chef, als dat voor windows ook bestaat heb je die optie ook nog.

Acties:
  • +2Henk 'm!

  • Killah_Priest
  • Registratie: augustus 2001
  • Laatst online: 07-07 21:57
Als je persé 1 file wilt hebben : encode de inhoud van je powershell script in base64. Start Powershell.exe met -EncodedCommand gevolgd door de base64 string.

Als je btw het powershell script via een GPO startup script uitvoert (en dan wel via get tabblad Powershell) dan wordt de executionpolicy sowieso genegeerd.

En als je wilt voorkomen dat users zomaar PS scripts aftrappen (ik zou niet weten hoe users dat per ongeluk zouden kunnen doen aangezien ps1 files standaard niet runnen maar met bv notepad openen) dan is de executionpolicy remotesigned voldoende.

[Voor 28% gewijzigd door Killah_Priest op 25-06-2016 08:05]


  • Dwazer
  • Registratie: april 2000
  • Laatst online: 25-06 12:25
Bedankt voor het meedenken!

Heb inmiddels een workaround gevonden:

Convert de *.ps1 naar een *.exe middels:

- PS2EXE
- ISA Steriods

Dan maakt het niet uit hoe de
code:
1
Set-ExecutionPolicy

staat :)

Slotje :>

Acties:
  • +1Henk 'm!

  • Question Mark
  • Registratie: mei 2003
  • Laatst online: 23:38

Question Mark

Moderator SWS/WOS

F7 - Nee - Ja

Waarom kies je eigenlijk voor deze optie, terwijl het veel handiger kan?

Killah_Priest in "[PowerShell] *.BAT en PowerShell code in 1 file"

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • Meekoh
  • Registratie: april 2005
  • Laatst online: 07-07 13:18
Inderdaad, nu zien de users een vage .exe file...
Je kunt gewoon vanuit je batchfile powershell starten met de parameter -executionpolicy bypass. Heb je exact hetzelfde bereikt. Die parameter zorgt er namelijk voor dat het alleen voor die sessie wordt genegeerd en je gebruikertjes hebben nog steeds remotesigned.

Computer says no


  • Dwazer
  • Registratie: april 2000
  • Laatst online: 25-06 12:25
Omdat ik hier al aangegeven had het niet te begrijpen en zelf verder ben gaan zoeken voor een manier er omheen :)
Meekoh schreef op dinsdag 28 juni 2016 @ 11:31:
Inderdaad, nu zien de users een vage .exe file...
Je kunt gewoon vanuit je batchfile powershell starten met de parameter -executionpolicy bypass. Heb je exact hetzelfde bereikt. Die parameter zorgt er namelijk voor dat het alleen voor die sessie wordt genegeerd en je gebruikertjes hebben nog steeds remotesigned.
En ja, dat zou kunnen, komt het feitelijk op hetzelfde neer. Maar dat is niet de oplossing die ik zoek, want dan heb ik nog steeds 2 files. En die wilde ik kwijt (mergen tot 1 file).

Daarbij gebruiken de gebruikers die *.exe niet, dat doe alleen ik als beheerder :)

  • Meekoh
  • Registratie: april 2005
  • Laatst online: 07-07 13:18
Dwazer schreef op dinsdag 28 juni 2016 @ 11:45:
[...]

Omdat ik hier al aangegeven had het niet te begrijpen en zelf verder ben gaan zoeken voor een manier er omheen :)


[...]

En ja, dat zou kunnen, komt het feitelijk op hetzelfde neer. Maar dat is niet de oplossing die ik zoek, want dan heb ik nog steeds 2 files. En die wilde ik kwijt (mergen tot 1 file).

Daarbij gebruiken de gebruikers die *.exe niet, dat doe alleen ik als beheerder :)
Dan nog kun je Powershell gewoon starten vanuit Start -> Run met dezelfde parameter.

Computer says no


  • Question Mark
  • Registratie: mei 2003
  • Laatst online: 23:38

Question Mark

Moderator SWS/WOS

F7 - Nee - Ja

Dwazer schreef op dinsdag 28 juni 2016 @ 11:45:
[...]

Omdat ik hier al aangegeven had het niet te begrijpen en zelf verder ben gaan zoeken voor een manier er omheen :)
code:
1
PowerShell -ExecutionPolicy Bypass  -File .\PowerShell_Bestand.ps1

Gewoon op bovenstaande wijze je powershell script starten en je bent klaar. Die hele bat file is nergens voor nodig. :)

Overigens, als je zoekt op google op "–ExecutionPolicy Bypass" kom je meer dan genoeg artikelen tegen die dit uitleggen. ;)

[Voor 3% gewijzigd door Question Mark op 28-06-2016 12:47]

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B

Pagina: 1


Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True