Private/Wissen/X01_Technology_FileSystem.ps1

# ? TITEL Dateisystem
# ? DESCRIPTION Arbeiten mit Ordner & Dateien (PSProvider FileSystem)
# ? TAGS FileSystem IO ACL OneDrive Tmp FreeSpace Hash SpecialFolder
# ? VERSION 2019.09.20

#region Vertiefende Informationen
Get-Command -Noun Item, ItemProperty, ItemPropertyValue, Acl, Path -Module Microsoft.PowerShell.*
Get-Help -Name about_Locations   -ShowWindow           
Get-Help -Name about_Path_Syntax -ShowWindow           
Get-Help -Name about_Providers   -ShowWindow           
#endregion

#region Allgemeine Dateioperationen
New-Item -Path c:\temp\NeueDatei.txt  -ItemType File
New-Item -Path "c:\temp\Neuer Ordner" -ItemType Directory
Remove-Item -Path c:\temp\NeueDatei.txt
#endregion

#region ACL Informationen eines Objektes anzeigen
Get-Acl -Path C:\Windows | Format-List -Property *
#endregion

#region Vererbung aktivieren / deaktivieren
$aclObjekt = Get-Acl -Path C:\Temp
$aclObjekt.SetAccessRuleProtection($true, $false) # isProtected, preserveInheritance Vererbung aktivieren
#endregion

#region ACL auf ein anderes Objekte übetragen
Set-Acl -AclObject $aclObjekt -Path c:\OrdnerB
#endregion

#region Auf allen FileSystem-Laufwerken suchen
Get-PSDrive -PSProvider FileSystem |
    Select-Object -ExpandProperty Root |
    Get-ChildItem -Force -File -ErrorAction Ignore
#endregion

#region Zusätzliche Informationen zu einer Datei anzeigen
Get-ChildItem -Path c:\temp -File | Select-Object -Property Name, Length, @{Label="Owner"; Expression={ $_ | Get-Acl | Select-Object -ExpandProperty Owner }}
#endregion

#region Belegter / Freier Speicher der Festplatten anzeigen
Get-PSDrive -PSProvider FileSystem
#endregion

#region Hash einer Datei berechnen
Get-FileHash -Path C:\Windows\explorer.exe
#endregion

#region Doppelte Dateien finden
$a = Get-ChildItem -Path C:\temp\A | Get-FileHash -Algorithm SHA512
$b = Get-ChildItem -Path C:\temp\B | Get-FileHash -Algorithm SHA512
Compare-Object -ReferenceObject $a -DifferenceObject $b -Property Hash -PassThru
#endregion

#region Dateien- / Ordner auf Veränderung überwachen
$fsw = New-Object -TypeName System.IO.FileSystemWatcher
$fsw.Path = "c:\temp"
$fsw.Filter="*.txt"
$action = {
    "Dateiänderung: {0} {1}" -f $eventArgs.FullPath, $eventArgs.ChangeType | Write-Warning
}
Register-ObjectEvent -InputObject $fsw -EventName Created -Action $action -SourceIdentifier FileSystemWatcher_Create
Register-ObjectEvent -InputObject $fsw -EventName Deleted -Action $action -SourceIdentifier FileSystemWatcher_Deleted
Get-EventSubscriber
Unregister-Event -SourceIdentifier FileSystemWatcher_Create  -Force
Unregister-Event -SourceIdentifier FileSystemWatcher_Deleted -Force
#endregion

#region Netzwerk-Freigabe erstellen
New-SmbShare -Name Data -Path C:\Windows 
Remove-SmbShare -Name Data -Confirm:$false
#endregion

#region Eine temporäre Datei erstellen
$tmpFile = New-TemporaryFile
$tmpFile
#endregion

#region Den tatsächlich Ort von Spezial-Ordner lokalisieren
[Environment]::GetFolderPath([System.Environment+SpecialFolder]::DesktopDirectory)
# * ODER SO
Join-Path -Path $env:USERPROFILE -ChildPath Desktop
$env:ALLUSERSPROFILE
$env:APPDATA
$env:CommonProgramFiles
$env:HOMEDRIVE
$env:LOCALAPPDATA
$env:OneDrive
$env:Path
$env:ProgramData
$env:ProgramFiles
${env:ProgramFiles(x86)}
$env:ProgramW6432
$env:PSModulePath
$env:SystemRoot
$env:TMP
$env:USERPROFILE
$env:windir
#endregion

#region Zugriff auf OneDrive

Install-Module -Name OneDrive -Scope CurrentUser -AllowClobber -Force

Start-Process https://apps.dev.microsoft.com/?referrer=https%3A%2F%2Fdev.onedrive.com#/appList
$auth = Get-ODAuthentication -ClientID "00000000....."
$accessToken = $auth.access_token

# ODER

Start-Process https://dev.onedrive.com/auth/msa_oauth.htm
$accessToken = "EwAoA61DBAAUGCCXc..."

Add-ODItem  -LocalFile (Join-Path -Path $env:USERPROFILE -ChildPath "Desktop\PowerShell V.5.12.ps1") -Path "/Wissen/PowerShell" -AccessToken $accessToken

#endregion