PowerShell

Zip a File with Powershell 3.0

Andres Bohren
Hallo zusammen, Mit dem folgenden Code kann man ohne zusätzliche Komponenten Files in ein ZIP Archiv packen. Add-Type -As System.IO.Compression.FileSystem [System.IO.Compression.CompressionLevel]$Compression = "Optimal" #ZIP a File [String]$ZipFilePath = "c:\temp\test.zip" [String]$File = "c:\temp\Mailboxes.txt" $Archive = [System.IO.Compression.ZipFile]::Open( $ZipFilePath, "Update" ) $null = [System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($Archive, $file, "Mailboxes.txt", $Compression) $archive.Dispose() Grüsse Andres Bohren

Remove AelitaEMW Messages in Public Folder with EWS Managed API

Andres Bohren
Hallo zusammen, Ich habe ein Powershell Script entwickelt um die Quest Migration Manager Messages nach der Migration im Public Folder zu entfernen. Das Script nutzt die EWS Managed API http://www.microsoft.com/en-us/download/details.aspx?id=35371 ############################################################################### # Remove Quest Migration Manager Hidden Messages in Public Folders # Remove Messages with Subject "AelitaEMW_" in Associated Content Store # # Script Uses EWS Managed API # http://www.microsoft.com/en-us/download/details.aspx?id=35371 # # Version 1.0 / 27.10.2013 # Andres Bohren / www.

Download File from Internet with powershell and proxyauthentication

Andres Bohren
Hallo zusammen, Heute musste ich ein Powershell Script erstellen, welches ein File aus dem Internet herunterlädt. Und dies auch noch über einen Authenticated Proxy. Am besten so, dass weder Benutzername noch Passwort im Script hinterlegt werden muss. #/*NoProxy*/ $source = "http://www.funkykitchenclub.ch/robots.txt" $dest = "c:\temp\file.txt" $WebClient = New-Object System.Net.WebClient $WebClient.DownloadFile($source,$dest) #/*Proxy with Authentication*/ $source = "http://www.funkykitchenclub.ch/robots.txt" $dest = "c:\temp\file.txt" $WebClient = New-Object System.Net.WebClient $WebProxy = New-Object System.Net.WebProxy("http://ICESRV03.corp.icewolf.ch:8080",$true) $WebProxy.UseDefaultCredentials = $true $WebClient.Proxy = $WebProxy

Powershell DNS reverse and MX lookup

Andres Bohren
Hallo zusammen, Kürzlich musste ich eine grössere Liste von IP Adressen auflösen - dazu habe ich mir kurzerhand ein Powershell Script geschrieben. Die IP's sind in einer CSV Datei Das CSV wird eingelesen und für jede IP wird ein DNS Reverse Lookup gemacht. Die Ausgabe erfolgt direkt in die Konsole. ############################################################################### # Reverse DNS Lookup with Powershell v1.0 # 27.01.2013 A.Bohren - http://blog.icewolf.ch ############################################################################### $List = Import-CSV C:\Temp\ip.csv Foreach ($entry in $list)

Configure Account Lockout feature in Forefront TMG

Andres Bohren
Hallo zusammen, Meine Account Lockout Policy erlaubt 5 falsche Anmeldungen, danach wird der Account für 30 Minuten gesperrt. Damit ein Account nicht durch fehlgeschlagene Anmeldeversuche vom OWA gesperrt wird, habe ich das Lockout Feature auf dem Forefront TMG aktiviert. Im folgenden Blog wird das genau erklärt. http://blog.powershell.no/2012/08/07/configure-account-lockout-feature-in-forefront-tmg-using-windows-powershell/ Das dazugehörige Script findet man hier: http://gallery.technet.microsoft.com/scriptcenter/Retrieve-and-modify-18a029ba $FPC = New-Object -ComObject FPC.root $array = $FPC.GetContainingArray() $listener = $array.RuleElements.WebListeners | Where-Object {$_.Name -eq “My Listener”}

Create AD Account, Exchange Mailbox, Lync Account with Powershell

Andres Bohren
Hallo zusammen, Habe mir mal gedacht, man könnte ein Script schreiben um einen AD Account, Exchange Mailbox und Lync Account zu erstellen. Dies hier ist der erste Versuch und kann sicher als Vorlage für ein eigenes Script dienen.... ############################################################# # /*Setting Up Variables*/ ############################################################# $Password = ConvertTo-SecureString "Pass@word1" -AsPlainText -Force $Firstname = "Bruce" $Lastname = "Springsteen" $Initials = $Firstname.Substring(0,1) + $Lastname.Substring(0,1) $SAMAccountName = $Lastname.Substring(0,6) + $Firstname.Substring(0,2) $UPN = $SAMAccountName + "

Active Roles Powershell work with Connection Object

Andres Bohren
Hallo zusammen, Wenn man in einem Script mit mehreren Domains arbeitet dann muss man entweder immer wieder die Verbindung mit Connect-QADService wechseln oder man erzeugt sich entsprechende Connection Objekte. $pwDest = read-host "Enter password" -AsSecureString $connDest = connect-QADService -service destination.internal -ConnectionAccount Destination\administrator -ConnectionPassword $pw $pwIcewolf = read-host "Enter password" -AsSecureString $connIcewolf = connect-QADService -service corp.icewolf.ch -ConnectionAccount CORP\administrator -ConnectionPassword $pwIcewolf Im obigen Beispiel muss das Passwort Interaktv eingegeben werden. Um ein Passwort in einem Script zu hinterlegen kann man auch folgenden Code verwenden.

Using Lync 2010 SDK with Powershell

Andres Bohren
Hallo zusammen, Ich habe ein bisschen mit Powershell und dem Lync 2010 SDK herumgespielt. Damit kann man den Lync Client quasi fernsteuern. Das SDK benötigt aber einen gestarteten Lync Client. Eine übersicht über die verschiedenen Lync API's gibt der folgende Link http://www.codelync.com/an-overview-of-the-lync-apis/ Lync 2010 SDK Documentation http://msdn.microsoft.com/en-us/library/lync/gg421054(v=office.14).aspx Lync 2010 SDK http://www.microsoft.com/en-us/download/details.aspx?id=18898 #Importing SDK Dll [string]$LyncModelDll = "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.dll" Import-Module -Name $LyncModelDll #Get Lync Client State $objLyncClient = [Microsoft.Lync.Model.LyncClient]::GetClient()

Free Disk Space with WMI

Andres Bohren
Hallo zusammen, Kürzlich musste ich eine Abfrage des freien Speicherplatzes machen. Da bietet sich natürlich Windows Management Instrumentation (WMI) an. Das kann man entweder per VBS oder per Powershell machen. Ich habe mal für beide Arten ein Beispiel erstellt. VBS Code strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk WHERE DriveType=3") For Each objDisk in colDisks result = result & "

Manage ActiveSync Devices

Andres Bohren
Hallo Zusammen, Beim Risk and Health Assessment Program for Exchange Server (ExRAP) wurde bemängelt, dass ich auf der ActiveSync Mailbox Policy die Option "Allow Non Provisionable Devices" aktiviert habe. Als Solution habe ich nun eine zweite ActiveSync Mailbox Policy erstellt, welche diese Option aktiv hat, in der Default Policy ist die Option jedoch deaktiviert. Es wäre auch möglich die ActiveSync Device Access Rules anzuwenden. Aber zuerst mal zu den Basics...