en da en da da en da en da da en en en en en en en en ceb en en en ja en en kn en da da da en en en ceb en en kn en da en en en da en en nb da en en en kn en en da nb en en en en sv en en en en en en en en en de en en en en en en en en es en en pl en en de en en de en da tr cv en da
Jeg havde en lille opgave den anden aften, flyt en folderRedirection SBS share fra en server til ny server.
Microsoft har efterhånder en del gode guides på området.
Min udfordring var blot at styre hvem som blev flyttet hvornår, f.eks. ønskede jeg ikke at flytte laptop brugere med det sammen, blot alm. desktop, dertil var der nogle historiske konties som også skulle flyttes der var placeret i en alternativ OU.
Tilformålet lavede jeg et powershell script, der bruge data fra Lansweeper, med hvem var laptop og desktop bruger, hvem var shared pc bruger osv. og så til sidst kaldte jeg nedestående funktion, der blot med initialerne, i dette tilfælde samaccountname, kunne flytt filerne til nyt share og melde brugen i den nye folder rederiect adgruppe, der tildele gpo'en.
if( (Test-Path $source ) -and (!( Test-Path $dest)))
$args = "/B " + $source + " " + $dest + " /Copyall /MIR /EFSRAW"
write-host "copying files : " $args
$p = Start-Process "Robocopy.exe" -ArgumentList $args -Wait
#Add user to adgroup for new FolderRedir
Add-ADGroupMember -Identity "GPO_User_FolderReDir" -Members $Usrinits
Powershell til at finde adgrupper en compter er medlem af
En lille kode snipped som gør det muligt at i powershell app deployment toolkit at undersøge om en pc har en adgruppe rettighede og derefter køre en installation
normalt ville man måske benytte get-adgroupmember funktionen, dog kræver dette at ad tools er installeret, hvilket de normalt vis ikke er på alle alm. workstations.
$ComputerassignedGroups = ([adsisearcher]"(&(objectCategory=computer)(cn=$env:COMPUTERNAME))").FindOne().Properties.memberof -replace '^CN=([^,]+).+$','$1'
execute-MSI -Action Install -Path $msi
Search AD for users Created after.
Powershell command til at finde bruger som er oprettet efter en givende dato, i eksemplet 1 maj 2017
Get-ADUser -Filter {SamAccountName -like "*"}  -Properties UserPrincipalName,displayname,EmailAddress,division,department,Company,streetAddress,City,postalCode,DistinguishedName,whencreated -SearchBase "OU=Users,DC=prod,DC=name,DC=localnet"  -Server Domaincontroler.name.localnet | ? { $_.whenCreated -ge (get-date "May 1, 2017")}| Select UserPrincipalName,displayname,division,department,Company,streetAddress,City,postalCode | Export-Csv $csvname
Powershell Running as admin
Et par linjer kode til at teste for om et script er startet op med admin credenitials, scriptet er fundet på denne MS blog
If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] “Administrator”)) { Write-Warning “You do not have Administrator rights to run this script!`nPlease re-run this script as an Administrator!” Break }
Skriv til Windows eventlog fra Powershell
Jeg har skulle skrive til windows evenloggen for at data kunne samles op af eventforward, her er hvordan man får oprettet en ny event source på den pæne måde og derefter skriver til denne.
if ([System.Diagnostics.EventLog]::SourceExists($EventlogSourceName) -eq $false) {
New-EventLog –LogName Application –Source $EventlogSourceName
Write-EventLog –LogName Application –Source $EventlogSourceName –EntryType Information –EventID 1 –Message “My Event Message ”
Powershell til at rydde op i mapper som er ubrugte
Powershell til at holde 2 dirs under mapper i sync.