Toon posts:

PowerShell - Zoeken en verplaatsen van files in folders

Pagina: 1
Acties:

Vraag


  • jenpet
  • Registratie: April 2010
  • Laatst online: 27-03 13:54
Hallo Tweakers,

Ik heb het idee dat ik echt iets simpels over het hoofd zie..

Wat wil ik bereiken ?

Ik wil files in een map + de subdirectories zoeken die ik defineer in mijn lijst.

Nu laat hij ze me wel zien .. maar ik krijg niks in mijn log en hij moved niks

Het lijkt erop dat mijn recurse niks doet terwijl ik geen error krijg.

Dit is wat ik al heb

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$logfile =  "C:\script\log.txt"
$old_document_share = "C:\test"
$new_document_share = "c:\moved"
$date_time = Get-Date -Format g
$names_account = (Get-Content C:\script\orderstomove.csv) -split ","
foreach ($account_name in $names_account)
{
# move foldersmatchthat match account name
write-host $account_name 

$folders = Get-ChildItem $old_document_share -Recurse  | Where-Object{($_.psiscontainer -eq $true) -and ($_.name.Contains($account_name))}
foreach ($folder in $folders)
{
write-host $folder
$get_acl = Get-Acl $folder.FullName | ft $folder.FullName | out-file $logfile -append 
$output_details = $date_time | out-file $logfile -append
$move_item =Move-Item -Path $folder -Destination $new_document_share
}
}

STEAM : http://steamcommunity.com/profiles/76561197992252776/

Alle reacties


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

Brahiewahiewa

boelkloedig

[quote]jenpet schreef op zaterdag 20 maart 2021 @ 12:00:
...
Nu laat hij ze me wel zien .. maar ik krijg niks in mijn log en hij moved niks
...
[code]
...
$output_details = $date_time | out-file $logfile -append
$move_item =Move-Item -Path $folder -Destination $new_document_share
...[/code]
[/quote]
Niet zo vreemd. Je wijst nu de commando's die zouden moeten loggen en de file zouden moeten verplaatsen, toe aan een string variabele. Maar ze worden nergens uitgevoerd

Yup @Killah_Priest heb gelijk

[Voor 4% gewijzigd door Brahiewahiewa op 21-03-2021 17:16. Reden: voortschrijdend inzicht]

QnJhaGlld2FoaWV3YQ==


  • jenpet
  • Registratie: April 2010
  • Laatst online: 27-03 13:54
Brahiewahiewa schreef op zaterdag 20 maart 2021 @ 12:51:
[...]

Niet zo vreemd. Je wijst nu de commando's die zouden moeten loggen en de file zouden moeten verplaatsen, toe aan een string variabele. Maar ze worden nergens uitgevoerd
Dat doe ik toch in :

foreach ($account_name in $names_account)

Sorry ben geen held in powershell O-)

STEAM : http://steamcommunity.com/profiles/76561197992252776/


Acties:
  • +1Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 28-03 18:31
Brahiewahiewa schreef op zaterdag 20 maart 2021 @ 12:51:
[...]

Niet zo vreemd. Je wijst nu de commando's die zouden moeten loggen en de file zouden moeten verplaatsen, toe aan een string variabele. Maar ze worden nergens uitgevoerd
Dit is dus niet waar, hij kent de eventuele output van Move-Item toe aan een variable.

Verder ontopic: heb je je script al eens debugged? Of regel voor regel uitgevoerd (in ieder geval tot de regel voordat je de loop start) en gekeken welke waardes je variables hebben? Ik zie ook bv een Write-Host in je foreach loop, geeft deze wel output?

Oja, in je call naar Move-Object bij de Path parameter: wat als je de "fullname" property van $folder meegeeft?

(Ik heb geen zin om de gehele code echt intensief na te lopen, maar bovenstaande dingen zijn sowieso wel de minimale zaken om te controleren)

  • jenpet
  • Registratie: April 2010
  • Laatst online: 27-03 13:54
Killah_Priest schreef op zondag 21 maart 2021 @ 14:52:
[...]

Dit is dus niet waar, hij kent de eventuele output van Move-Item toe aan een variable.

Verder ontopic: heb je je script al eens debugged? Of regel voor regel uitgevoerd (in ieder geval tot de regel voordat je de loop start) en gekeken welke waardes je variables hebben? Ik zie ook bv een Write-Host in je foreach loop, geeft deze wel output?

Oja, in je call naar Move-Object bij de Path parameter: wat als je de "fullname" property van $folder meegeeft?

(Ik heb geen zin om de gehele code echt intensief na te lopen, maar bovenstaande dingen zijn sowieso wel de minimale zaken om te controleren)
ja heb regel voor regel gedebugged alleen hij laat geen errror niks zien , klinkt heel makkelijk maar zo is niet bedoeld ja mijn write host output ook de filenames die hij zoekt maar hij doet er verder niks mee...

en heb ook scripts van internet geplukt ... twijfel bijna of het aan mijn powershell ligt..

STEAM : http://steamcommunity.com/profiles/76561197992252776/


Acties:
  • +2Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

jenpet schreef op maandag 22 maart 2021 @ 23:51:
[...]


ja heb regel voor regel gedebugged alleen hij laat geen errror niks zien , klinkt heel makkelijk maar zo is niet bedoeld ja mijn write host output ook de filenames die hij zoekt maar hij doet er verder niks mee...

en heb ook scripts van internet geplukt ... twijfel bijna of het aan mijn powershell ligt..
Ik snap jouw script niet. Je zegt dat je files zoekt, maar je zoekt geen files. Je zoekt directories: $_.psiscontainer -eq $true

Als je files zoekt dan is dit logischer:

$folders = Get-ChildItem $old_document_share -Recurse -File | Where-Object { $_.name.Contains($account_name) }

Daarnaast is .Contains volgens mij ook case sensitive. Dat is in Powershell vaak niet wat je wilt als je met files werkt.

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 28-03 18:31
downtime schreef op dinsdag 23 maart 2021 @ 17:00:
[...]

Ik snap jouw script niet. Je zegt dat je files zoekt, maar je zoekt geen files. Je zoekt directories: $_.psiscontainer -eq $true

Als je files zoekt dan is dit logischer:

$folders = Get-ChildItem $old_document_share -Recurse -File | Where-Object { $_.name.Contains($account_name) }

Daarnaast is .Contains volgens mij ook case sensitive. Dat is in Powershell vaak niet wat je wilt als je met files werkt.
Plus dat "contains" gebruikt wordt om een exacte match binnen een collection te vinden ipv like waarmee op partial strings gezocht lan worden.

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Killah_Priest schreef op woensdag 24 maart 2021 @ 12:49:
[...]


Plus dat "contains" gebruikt wordt om een exacte match binnen een collection te vinden ipv like waarmee op partial strings gezocht lan worden.
Dat dacht ik eerst ook toen ik Contains zag. Maar de .NET method Contains doet wat anders dan de Powershell operator -Contains. Raar maar waar.

https://docs.microsoft.co...ing.contains?view=net-5.0

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 28-03 18:31
downtime schreef op woensdag 24 maart 2021 @ 13:19:
[...]

Dat dacht ik eerst ook toen ik Contains zag. Maar de .NET method Contains doet wat anders dan de Powershell operator -Contains. Raar maar waar.

https://docs.microsoft.co...ing.contains?view=net-5.0
Ah natuurlijk, dit is String.Contains() en niet IList.Contains() (welke weer op een collection gedaan wordt).

  • SlinkingAnt
  • Registratie: December 2001
  • Niet online
Het lijkt erop dat je de persoonlijke map van bepaalde gebruikers wilt verplaatsen, zodat je dit later kunt opschonen?

Zelf heb ik hiervoor een script gemaakt welke kijkt of de foldername overeenkomt met een actieve gerbuiker in AD. Zo niet, wordt de folder verplaatst naar een archief-locatie om later op te ruimen.

Als je wilt, kan ik 'm hier wel plakken voor je.

En zoals hierboven, geen .contains($account_name) gebruiken, maar -like "$account_name" :).

[Voor 11% gewijzigd door SlinkingAnt op 24-03-2021 13:46]

Intel C2Q 9450@3.3 | Gigabyte P35-DS4 | Sapphire R280x | 4x 2GiB PC6400 Kingston DDR2 | 1x Intel 320SSD 240GB | 2x Spinpoint F1 320GiB

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee