Este é apenas o meu pensamento e opinião sobre como eu poderia fazer isso ... e eu mudei um pouco os nomes das variáveis para que eles correspondam aos cmdlets usados. Você não precisa apenas torná-lo mais legível para mim.
# I don't have a domain computer to work with so my local
# PC includes the "public" folder you likely want have
# this but nice to include just in case. As well the "Default*"
# is there because I'm on Windows 8.1
# so the upgrade modified the "Default" folder
# to be "Default.migrated" for some reason.
# The "-Exclude" allows you to put in the names of those items (directory names
# or file names) that you want to exclude, it allows wildcard values as well)
# Then as suggested in a comment using -ExpandProperty FullName allows the
# object to be passed as a string instead of a system object which
# adds on extra characters that some other cmdlet may not like.
$userFolder = Get-ChildItem -Path 'C:\Users' -Exclude 'Default*','All Users','Administrator', 'Public' |
Select -ExpandProperty FullName
# just the file I was playing with here
$sFile = '.\text.txt'
foreach ($uf in $userFolder) {
$dest = "$uf\AppData\LocalLow\Sun\Java\Deployment\"
# I want to test for the path to exist first and if it
# does then add the file, if it does not then you
# would create the directory and copy the file.
# I noticed in yours that you created an empty
# file and then copied it. Works the same way.
if (Test-Path $dest) {
Copy-Item -Path $sFile -Destination $dest -Force
}
else {
New-Item -ItemType Directory -Path $dest -Force
Copy-Item -Path $sFile -Destination $dest -Force
}
}
Como já foi observado, estou em um computador autônomo que está jogando com isso, mas a saída dos comandos que recebo está aqui:
New-Item -ItemType Directory -Path C:\Users\Shawn\AppData\LocalLow\Sun\Java\Deployment\ -Force
Copy-Item -Path .\text.txt -Destination C:\Users\Shawn\AppData\LocalLow\Sun\Java\Deployment\ -Force
Você também pode gerar o comando que ele executaria se você quiser testá-lo primeiro colocando os comandos entre aspas duplas:
"Copy-Item -Path $sFile -Destination $dest -Force"