Mit Powershell ein Verzeichnis kopieren, wenn Visual Studio Code beendet wurde
Hallo Powershell-Experten,
ich habe ein Powershell-Skript geschrieben, das die IDE Visual Studio Code startet. Das Starten wird durch den &-Operator ausgelöst (Zeile 30). Ich benötige nun eine weitere Anweisung, die dafür sorgt, dass das Verzeichnis, in dem der Benutzer programmiert hat, von C:\Users\ nach H:\projekte kopiert wird, wenn der Benutzer die IDE schließt.
Nun weiß ich nicht genau, ob das Skript nach der Verwendung des &-Operators hält und auf das Schließen von Visual Studio Code wartet oder ob die Abarbeitung der Anweisungen parallel zum Aufruf der IDE fortgesetzt wird.
Dank!
ich habe ein Powershell-Skript geschrieben, das die IDE Visual Studio Code startet. Das Starten wird durch den &-Operator ausgelöst (Zeile 30). Ich benötige nun eine weitere Anweisung, die dafür sorgt, dass das Verzeichnis, in dem der Benutzer programmiert hat, von C:\Users\ nach H:\projekte kopiert wird, wenn der Benutzer die IDE schließt.
Nun weiß ich nicht genau, ob das Skript nach der Verwendung des &-Operators hält und auf das Schließen von Visual Studio Code wartet oder ob die Abarbeitung der Anweisungen parallel zum Aufruf der IDE fortgesetzt wird.
Dank!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class VSCodeSetup{
[string] $WorkingDir
[string] $userDataDir
[string] $projectpath
[string] $packagepath
VSCodeSetup([string]$workingDir,[string]$userDataDir,[string]$projectpath,[string] $packagepath){
$this.workingDir=$workingDir
$this.userDataDir=$userDataDir
$this.projectpath=$projectpath
$this.packagepath=$packagepath
If(!(test-path -Path $this.WorkingDir)){
New-Item -ItemType Directory -Force -Path $this.WorkingDir
New-Item -ItemType Directory -Force -Path $this.userDataDir
New-Item -ItemType Directory -Force -Path $this.projectpath
Copy-Item "C:\Program Files\Microsoft VS Code\projects\" -Destination $this.projectpath -Recurse
}
If(!(test-path -Path ($this.packagepath+"\packages"))){
Copy-Item "C:\Program Files\Microsoft VS Code\packages\" -Destination $this.packagepath -Recurse
}
}
[void] startVSCode(){
$this.projectpath+="\projects"
$userDataPath=$this.userDataDir
$arguments=@("--extensions-dir=""C:\Program Files\Microsoft VS Code\ext""","--user-data-dir=""$userDataPath""", $this.projectpath)
& "C:\Program Files\Microsoft VS Code\Code.exe" $arguments
}
[void] clearUserdata(){
If(!(test-path -Path ($this.userDataDir))){
Remove-Item 'C:\tmp\userdata' -Recurse
}
}
}
$workingDir="H:\vscode"
$extensionsDir="C:\Program Files\Microsoft VS Code\ext"
$userDataDir="C:\tmp\userdata"
$projectpath=$workingDir
$packagepath="C:\"
$start= [VSCodeSetup]::new($workingDir,$userDataDir,$projectpath,$packagepath)
$start.clearUserdata()
$start.startVSCode()
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2277920221
Url: https://administrator.de/forum/mit-powershell-ein-verzeichnis-kopieren-wenn-visual-studio-code-beendet-wurde-2277920221.html
Ausgedruckt am: 15.04.2025 um 14:04 Uhr
3 Kommentare
Neuester Kommentar

Nun weiß ich nicht genau, ob das Skript nach der Verwendung des &-Operators hält und auf das Schließen von Visual Studio Code wartet
Das ist beim & Operator per Default der Fall, aber kommt primär auf die Anwendung drauf an, wenn diese bspw. einen Prozess startet der sich kurz nach dem Start selbst beendet und einen anderen initiiert dann arbeitet die Shell natürlich direkt weiter.Des weiteren hast du immer auch start-process mit dem -wait Parameter zur Verfügung, aber auch hier gilt, macht die Anwendung nicht mit bringt dir der -wait Parameter auch nichts, dann musst du per while Schleife die Prozessliste auf dein Programm überwachen und bei Fehlen des Prozesses in der Liste dann weiter machen.
1
2
3
4
2
3
4
while((Get-Process -Name [MeinProzess] -EA SilentlyContinue)){
Sleep 2
}
# hier geht's weiter nachdem es keinen Prozess mehr gibt
Hatte man ja eigentlich auch selbst mal schnell selbst testen können, 🤔 ...