PowerShell

Mark Updates on WSUS as optional with Powershell

Andres Bohren
Hallo zusammen Der eine oder andere hat wohl das Windows Management Framework 3.0 auf dem WSUS freigegeben. Leider erst ein paar Tage später macht das Exchange Team Blog darauf aufmerksam, dass dies unter Exchange 2007 / 2010 noch nicht unterstützt ist. Per zufall bin ich über den folgenden Artikel gestolpert, hier wird gezeigt, wie man auch in WSUS Updates als optional kennzeichnen kann: http://blogs.technet.com/b/rmilne/archive/2012/12/18/exchange-2010-powershell-3-0-and-wsus.aspx # Load up the required .NET assembly [reflection.

Powershell and SQL commands / SQL transactions

Andres Bohren
Hallo zusammen, Ich habe mal ein bisschen mit SQL und Powershell rumgespielt. Man sieht im SQL Management Studio, dass es nur eine Zeile gibt. ############################################################################### # SQL Query's with Powershell ############################################################################### #Setup SQL Connection $SqlConnection = New-Object System.Data.SqlClient.SqlConnection #$SqlConnection.ConnectionString = "Data Source=ICESRV02;database=db_test;Uid=myusername;Pwd=mypassword" #Use this Windows Authentication $SqlConnection.ConnectionString = "Data Source=ICESRV02;database=db_test;Integrated Security=SSPI;" $SqlConnection.Open() #SQL SELECT $qSQL = "SELECT fID, fVorname, fNachname FROM tUsers" $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = $qSQL $SqlCmd.Connection = $SqlConnection

Powershell Output truncation

Andres Bohren
Hallo zusammen, Bei verschiedenen Powershell cmdlets wird der Output nach einer bestimmten Anzahl Elemente abgeschnitten. Get-QADUser -Identity w.tell | fl memberof Dies kann umgangen werden indem man den Parameter "ExpandProperty" verwendet. Get-QADUser -Identity w.tell | select -ExpandProperty Memberof Oder man passt die Variable $FormatEnumerationLimit an. Durch setzen von $FormatEnumerationLimit = -1 wird das EnumerationLimit auf unlimited gesetzt. $FormatEnumerationLimit $FormatEnumerationLimit = -1 Get-QADUser -Identity w.tell | fl memberof Danke an Roger Buchser für den Hinweis!

Powershell Basics

Andres Bohren
Hallo zusammen, Damit ich mir nicht immer die verschiedensten Powershell Grundbefehle zusammensuchen muss, habe ich mir diese jetzt mal in einem Blogpost zusammengefasst. /*Integrierte Hilfe*/ Get-Help Get-Help Get-Date Get-Help * /*Liste aller verfügbaren cmdlets*/ Get-command /*Powershell Version*/ get-host | select version /*Execution Policy*/ Get-Help about_signing Get-ExecutionPolicy Set-ExecutionPolicy Unrestricted | RemoteSigned | AllSigned | Restricted | Default | Bypass | Undefined Set-ExecutionPolicy RemoteSigned Policy Wert Beschreibung Restricted (Default) Keine Skripte werden ausgeführt Allsigned Nur signierte Skripte werden ausgeführt RemoteSigned Lokal erstellte Skripte sind erlaubt, aber andere Skripte müssen signiert sein Unrestricted Jedes Skript wird ausgeführt /*Powershell Datatypes*/

Powershell Remoting with Exchange

Andres Bohren
Hallo zusammen, Für ein Powershell Script habe ich einen Befehl aus den Exchange cmdlets benötigt. Deshalb habe ich mich mal mit Powershell Remoting beschäftigt. Und so gehts: Zuerst wird eine Session erzeugt $MySession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://icesrv01.corp.icewolf.ch/PowerShell/ -Authentication Kerberos Nun wird die Session Importiert Import-PSSession -Session $MySession -DisableNameChecking | Out-Null Nun kann man die Exchange Cmdlets des Remote Servers benutzen Get-Mailbox -identity MAILBOX Um die Remote Session zu beenden benutzt man Remove-PSSession $MySession Um zu zeigen, dass die Exchange Cmdlets lokal nicht geladen sind führe ich den Exchange Befehl nochmals aus Get-Mailbox -identity MAILBOX Grüsse Andres Bohren

Powershell Remoting with Lync

Andres Bohren
Hallo zusammen, Wo ich gleich beim Powershell Remoting bin, zeige ich euch doch auch gleich wie man das mit Lync macht. Lync Powershell Remote Session vorbereiten $lyncOptions = New-PSSessionOption -SkipRevocationCheck -SkipCACheck -SkipCNCheck $lync = New-PSSession -ConnectionUri https://icesrv06.corp.icewolf.ch/ocspowershell -SessionOption $lyncOptions -Authentication NegotiateWithImplicitCredential Powershell Remote Session importieren Import-PSSession $lync | Out-Null Ein Lync cmdlet ausführen Get-CsUser -Identity boa Powershell Remote Session beenden Remove-PSSession $lync Grüsse Andres Bohren

Powershell FileOpenDialog

Andres Bohren
Hallo zusammen, Mit Powershell kann man auch grafische Elemente einbinden, wie etwa den FileOpenDialog um ein File auszuwählen. Und hier der Source Code dazu ############################################################################### #Open File Dialog ############################################################################### Function Get-FileName { PARAM ( [string]$initialDirectory ) [void] [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog.initialDirectory = $initialDirectory $OpenFileDialog.ShowHelp = $true $OpenFileDialog.filter = "All files (*.*)| *.*" $show = $OpenFileDialog.ShowDialog() If ($Show -eq "OK") { Return $OpenFileDialog.FileName } } ############################################################################### #Main Program

Powershell 3.0 Release Candidate (RC)

Andres Bohren
Hallo zusammen, Ich habe mir mal den Release Candidate (RC) der Powershell 3.0 auf einem Windows 7 installiert. Microsoft .NET Framework 4 (Prerequisit) http://www.microsoft.com/en-us/download/details.aspx?id=17851 Windows Management Framework 3.0 - RC http://www.microsoft.com/en-us/download/details.aspx?id=29939 What's New in Windows PowerShell 3.0 http://technet.microsoft.com/en-us/library/hh857339.aspx PowerShell V3 Guide - Technet Wiki http://social.technet.microsoft.com/wiki/contents/articles/4725.powershell-v3-guide-en-us.aspx Grüsse Andres Bohren

Script: Export Calendar Permissions

Andres Bohren
Hallo zusammen, Ich habe mir ein Powershell Script geschrieben, um die Kalenderberechtigungen von Benutzern einer CSV Liste zu exportieren. Ich habe das unter Exchange 2010 getestet und natürlich wird dazu die Exchange Management Shell benötigt. ############################################################################### # ExportCalendarPermissions # Version 1.0 / 29.08.2012 # Andres Bohren / www.icewolf.ch / blog.icewolf.ch / info@icewolf.ch ############################################################################### $logpath = "T:\Visual Basic\PowerShell\ExportCalendarPermissions\ExportCalendarPermissions.log" $sw = new-object system.IO.StreamWriter($LogPath, 1) $mbx = Import-Csv "T:\Visual Basic\PowerShell\ExportCalendarPermissions\ExportCalendarPermissions.csv" ForEach ($Mailbox in $mbx)

Reset Active Directory User Password with Powershell

Andres Bohren
Hallo zusammen, Eine neue Scripting Aufgabe hat heute auf mich gewartet. Ich sollte ein Script eintwickeln, welches ein CSV File einliest und ein default Passwort vergibt und dort ein zusätzlichen Wert zum Passwort hinzufügt. Ausserdem soll auch gleich noch das Häcklein "User must change password at next logon" gesetzt werden. Das CSV File sieht so aus: SamaccountName,Password f.willy,1001 test50,1002 Und hier kommt das Script welches mit dem Quest Active Roles Powershell Snapin realisiert habe