Powershell script op de achtergrond uitvoeren

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • tww62
  • Registratie: December 2006
  • Niet online
Op voorhand: ik heb géén verstand van Powershell en scripting...

Wel heb ik iets gevonden dat deels werkt en ik hoop dat iemand mij verder kan helpen.

Wat ik wil bereiken:
bestanden met een bepaalde extensie (in dit geval jpg of png) van een bepaalde folder (c:\..\..\Documents)
automatisch verplaatsen naar een andere folder. Direct, of vrij direct daarna.

Ik heb in 1e instantie gezocht naar een simpele utility, maar helaas niets van mijn gading gevonden.

Wel heb ik op stackexchange een powershell script gevonden.

--
// moveimages.ps1

for (;;) {
start-sleep -s 30
move-item c:\MyDocuments\*.png e:\JPG\Images
move-item c:\MyDocuments\*.jpg e:\JPG\Images
}

--

Op zich werkt dit.

Nu zou ik

OF:
1. de script starten en dat de powershell venster verdwijnt (dat het dus op de achtergrond draait)
Overigens, hoe stop ik het/sluit ik het af?


OF
2. starten wanneer Windows start (startup menu zeg maar),
Alleen is de drive 'e:\' in dit voorbeeld een encrypted drive, die na opstarten van Windows middels een password geopend wordt, m.a.w. de e-drive is niet direct beschikbaar...
de script zou dan moeten detecteren dat de drive (nog) niet beschikbaar is en dan eigenlijk niets moeten doen.


Vermoedelijk is de 1e optie de eenvoudigste.

Bij voorbaat dank!

Alle reacties


Acties:
  • +1 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 25-08 11:27

Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 12:55

MAX3400

XBL: OctagonQontrol

Voor optie 2 heb/had je toch Test-Path?

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 14:24
tww62 schreef op maandag 13 november 2017 @ 07:34:
Op voorhand: ik heb géén verstand van Powershell en scripting...

Wel heb ik iets gevonden dat deels werkt en ik hoop dat iemand mij verder kan helpen.

Wat ik wil bereiken:
bestanden met een bepaalde extensie (in dit geval jpg of png) van een bepaalde folder (c:\..\..\Documents)
automatisch verplaatsen naar een andere folder. Direct, of vrij direct daarna.

Ik heb in 1e instantie gezocht naar een simpele utility, maar helaas niets van mijn gading gevonden.

Wel heb ik op stackexchange een powershell script gevonden.

--
// moveimages.ps1

for (;;) {
start-sleep -s 30
move-item c:\MyDocuments\*.png e:\JPG\Images
move-item c:\MyDocuments\*.jpg e:\JPG\Images
}

--

Op zich werkt dit.

Nu zou ik

OF:
1. de script starten en dat de powershell venster verdwijnt (dat het dus op de achtergrond draait)
Overigens, hoe stop ik het/sluit ik het af?


OF
2. starten wanneer Windows start (startup menu zeg maar),
Alleen is de drive 'e:\' in dit voorbeeld een encrypted drive, die na opstarten van Windows middels een password geopend wordt, m.a.w. de e-drive is niet direct beschikbaar...
de script zou dan moeten detecteren dat de drive (nog) niet beschikbaar is en dan eigenlijk niets moeten doen.


Vermoedelijk is de 1e optie de eenvoudigste.

Bij voorbaat dank!
Kun je duidelijk aangeven wat precies de bedoeling is? Moet er live monitoring plaatsvinden op een folder? In dat geval ontkom je niet aan .NET code in je Powershell script ivm het moeten maken van een FileSystemWatcher object.
Deze kun je als volgt aanmaken (uitgaande van PS5 of hoger - bij oudere PS versies dien je New-Object te gebruiken om de constructor aan te roepen):
PowerShell:
1
$Watcher = [System.IO.FileSystemWatcher]::new()


Omdat je verder ook niet heel erg duidelijk bent qua requirements is het lastig om je hier verder mee te helpen, echter zijn er tig voorbeelden te vinden over het gebruik van een filesystemwatcher binnen Powershell (de FSW was jaren geleden mijn eerste introductie mbt het gebruik van events binnen Powershell).

Wat betreft het automatisch starten van het script : scheduled task inschieten. Powershell.exe heeft meerdere command line opties, ook om het venster hidden te maken (en je zult ook -noexit moeten specificeren bij het starten, anders stopt het PS script).

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Even een tikje door naar Windows Clients waar Powershell vragen thuishoren. Dat staat overigens ook uitgelegd in Waar hoort mijn topic?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • +1 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 14:24
Creepy schreef op dinsdag 14 november 2017 @ 11:51:
Even een tikje door naar Windows Clients waar Powershell vragen thuishoren. Dat staat overigens ook uitgelegd in Waar hoort mijn topic?
Misschien niet de correcte plaats om dit neer te zetten hoor, maar ik moet het gewoon even kwijt aangezien ik dit al een keer eerder heb aangegeven : Powershell is tegenwoordig gewoon een programmeertaal.
Zodra je met .NET objecten zoals een FileSystemWatcher gaat werken dan ben je niet meer bezig met de "standaard" sysadmin taken, dit komt al een stuk dichter bij development.

Waar zou ik bv een vraag mbt een script van 300+ regels (bestaande uit een oath authenticatie flow gevolgd door bv het syncen van SharePoint data) kwijt moeten? Ik kan je nu al vertellen dat ik in PRG een stuk beter geholpen zou worden met deze vragen als binnen Windows Clients.


No offense maar ik zou zeggen : kom eens onder die steen vandaan wat betreft Powershell. In 10 jaar tijd is het van een simpele scripttaal naar een volledige programmeertaal gegaan (je hebt ook classes binnen Powershell, je kunt .NET code embedden etc).
Met het huidige beleid van Tweakers op dit gebied zouden PHP, Python etc ook geen plek hebben binnen PRG.

(en ja, als iemand die letterlijk een groot deel van zijn inkomen binnenhaalt vanwege zijn Powershell kennis komt het gewoon beledigend en denigrerend over hoe men bij PRG blijkbaar over Powershell denkt).

Misschien is het een keer tijd om het beleid mbt "waar hoort mijn topic" aan te passen.

Acties:
  • +1 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Ik wil best die discussie met je aan gaan, maar niet hier. Wel in Feedback op moderatie binnen de Devschuur .

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Ik denk dat er genoeg gevallen zijn te bedenken waarin het niet werkt.
Wat als je bijvoorbeeld een jpg aan het editen bent, met een programma dat het origineel gelocked houdt?
Dan knalt je script er gewoon uit

Denk dat je wat meer moet vertellen over de usercase, om tot een oplossing te komen

QnJhaGlld2FoaWV3YQ==

Pagina: 1