Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Copy the nice Windows 10 background images to a folder where you can keep them.
- # -----------------------------------------------------------------------------
- # Script: Get-FileMetaDataReturnObject.ps1
- # Author: ed wilson, msft
- # Date: 01/24/2014 12:30:18
- # Keywords: Metadata, Storage, Files
- # comments: Uses the Shell.APplication object to get file metadata
- # Gets all the metadata and returns a custom PSObject
- # it is a bit slow right now, because I need to check all 266 fields
- # for each file, and then create a custom object and emit it.
- # If used, use a variable to store the returned objects before attempting
- # to do any sorting, filtering, and formatting of the output.
- # To do a recursive lookup of all metadata on all files, use this type
- # of syntax to call the function:
- # Get-FileMetaData -folder (gci e:\music -Recurse -Directory).FullName
- # note: this MUST point to a folder, and not to a file.
- # -----------------------------------------------------------------------------
- Function Get-FileMetaData
- {
- <#
- .Synopsis
- This function gets file metadata and returns it as a custom PS Object
- .Description
- This function gets file metadata using the Shell.Application object and
- returns a custom PSObject object that can be sorted, filtered or otherwise
- manipulated.
- .Example
- Get-FileMetaData -folder "e:\music"
- Gets file metadata for all files in the e:\music directory
- .Example
- Get-FileMetaData -folder (gci e:\music -Recurse -Directory).FullName
- This example uses the Get-ChildItem cmdlet to do a recursive lookup of
- all directories in the e:\music folder and then it goes through and gets
- all of the file metada for all the files in the directories and in the
- subdirectories.
- .Example
- Get-FileMetaData -folder "c:\fso","E:\music\Big Boi"
- Gets file metadata from files in both the c:\fso directory and the
- e:\music\big boi directory.
- .Example
- $meta = Get-FileMetaData -folder "E:\music"
- This example gets file metadata from all files in the root of the
- e:\music directory and stores the returned custom objects in a $meta
- variable for later processing and manipulation.
- .Parameter Folder
- The folder that is parsed for files
- .Notes
- NAME: Get-FileMetaData
- AUTHOR: ed wilson, msft
- LASTEDIT: 01/24/2014 14:08:24
- KEYWORDS: Storage, Files, Metadata
- HSG: HSG-2-5-14
- .Link
- Http://www.ScriptingGuys.com
- #Requires -Version 2.0
- #>
- Param([string[]]$folder)
- foreach($sFolder in $folder)
- {
- $a = 0
- $objShell = New-Object -ComObject Shell.Application
- $objFolder = $objShell.namespace($sFolder)
- foreach ($File in $objFolder.items())
- {
- $FileMetaData = New-Object PSOBJECT
- for ($a ; $a -le 266; $a++)
- {
- if($objFolder.getDetailsOf($File, $a))
- {
- $hash += @{$($objFolder.getDetailsOf($objFolder.items, $a)) =
- $($objFolder.getDetailsOf($File, $a)) }
- $FileMetaData | Add-Member $hash
- $hash.clear()
- } #end if
- } #end for
- $a=0
- $FileMetaData
- } #end foreach $file
- } #end foreach $sfolder
- } #end Get-FileMetaData
- $null = mkdir "$env:temp\Background" -ErrorAction SilentlyContinue -Force
- $null = mkdir "c:\Users\$($env:USERNAME)\Pictures\Background" -ErrorAction SilentlyContinue -Force
- # List the files in the folder where Windows download all the nice pictures
- $files = ls "C:\Users\$($env:username)\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"
- # Create a copy with the .JPG extension to the %temp%\Background folder
- foreach ($file in $files)
- {
- copy-item $file.fullname "$($env:temp)\Background\$($file.basename).jpg"
- #write-host $file.fullname "$($env:temp)\Background\$($file.basename).jpg"
- }
- # process the properties to
- $picMetadatas = Get-FileMetaData -folder $env:temp\Background
- foreach ($picMetadata in $picMetadatas)
- {
- # check if the width is longer than 1500, if yes copy to the background folder ;-)
- if($picMetadata.Width -eq "1920 pixels")
- {
- Write-Host "Adding $picMetadata.path"
- copy-item $picMetadata.path "c:\Users\$($env:USERNAME)\Pictures\Background" -Force
- }
- }
- # delete the folder
- #rmdir "$env:temp\Background" -Force
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement