Powershell script hilfe

Kingpin

Hack User
4 Jul 2015
103
13
#1
Hey Leuts,

ich hab mir hier ein kleines script zusammen gekleistert:

$Path = "Server1\****************************************************\??_archive\loaded_archive"
$Daysback = "-35"
$destination = "Server2**********************************************\??_archive\loaded_archive"
$CurrentDate = Get-Date
$DatetoMove = $CurrentDate.AddDays($Daysback)
Get-ChildItem -Path $Path -Filter "*.csv" -Recurse | where {$_.LastWriteTime -lt $DatetoMove -and -not $_.psiscontainer} | Move-Item -Destination $destination

Ausgangs situation:

ich hab mehrere Ordner (inkl. filles) mit den Namen DE_archive FR_archive GB_archive und und und ...

jetzt sollen die files zu einer anderen destination in Ordner mit den selben namen.

hab es jetzt wie oben ^geschrieben^ so probiert, passiert aber leider nichts, nur wenn ich die Fragezeichen mit den jeweiligen Länderbezeichnungen austausche moved er die files.

Wie kann ich das umsetzen?

Mit einer Schleife vllt?

hoffe auf Hilfe.

mfg
 
Last edited:

Kingpin

Hack User
4 Jul 2015
103
13
#3

Meinst so?

Und die Files müssten in einen anderen Ordner wo jeweils wieder DE_archive ist oder alle files einfach dort rein?

bingo.

wieder genauso nur halt anderer pfad.

//Edit

habs oben nochmal für ein besseres Verständnis editiert.

mfg
 

Die_Quelle

Software-Ass
24 Sep 2011
2,821
717
#7
Versuch mal deine unterschiedlichen Abfragen nicht alle gleich zu pipen
Prinzipiell sollte das zwar gehen, aber so findest du leichter deine Fehler.

Code:
$filteredChilds = Get-ChildItem -Path $Path -Filter "*.csv" -Recurse

foreach $filteredChilds {
if ($_.LastWriteTime -lt $DatetoMove -and -not $_.psiscontainer) {
Move-Item -Destination $destination
}
}

probier das mal so.
 

Kingpin

Hack User
4 Jul 2015
103
13
#8
Versuch mal deine unterschiedlichen Abfragen nicht alle gleich zu pipen
Prinzipiell sollte das zwar gehen, aber so findest du leichter deine Fehler.

Code:
$filteredChilds = Get-ChildItem -Path $Path -Filter "*.csv" -Recurse

foreach $filteredChilds {
if ($_.LastWriteTime -lt $DatetoMove -and -not $_.psiscontainer) {
Move-Item -Destination $destination
}
}

probier das mal so.

versuch ich gleich mal aus!! danke danke
[doublepost=1520413107,1520410895][/doublepost]Okay, ich glaube ich weiß wo mein Fehler liegt.

Die beiden Fragezeichen *\??_archive\loaded_archive" fungieren unter powershell wohl nicht als platzhalter, ergo wird als ganzer string erkannt.

Das Problem ist ich kenne mich mit string manipulation unter powershell nicht so wirklich gut aus, aber mein Gedanke wäre jetzt die Zeichenketten zu vergleichen, also ".CompareTo" und wenn "true" denn tue das.

wäre das eine Option?
 

ysL

Donator
15 May 2016
253
246
#9
Das Problem ist ich kenne mich mit string manipulation unter powershell nicht so wirklich gut aus, aber mein Gedanke wäre jetzt die Zeichenketten zu vergleichen, also ".CompareTo" und wenn "true" denn tue das.

wäre das eine Option?
probier es halt aus, deine Bedingung hast du ja schon. Musst nur noch das if setzen
 

Die_Quelle

Software-Ass
24 Sep 2011
2,821
717
#10
$variable1 = "deininhalt"

$variable2 = ("abc" + $variable1 + "defg")


Code:
PS C:\Users\Die_Quelle> $variable1 = "deininhalt"
PS C:\Users\Die_Quelle> $variable2 = ("abc" + $variable1 + "defg")
PS C:\Users\Die_Quelle> $variable2
abcdeininhaltdefg
Es ist sehr simpel.
 
Likes: Kingpin