Dies ist eine alte Version des Dokuments!
Powershell
Windows Powershell
Import-Module activedirectory
Search-ADAccount –LockedOut
Search-ADAccount -LockedOut | Unlock-ADAccount
AD Powershell
$store = @() $domain = New-Object System.DirectoryServices.DirectoryEntry $searcher = New-Object System.DirectoryServices.DirectorySearcher $searcher.SearchRoot = $domain $searcher.PageSize = 100 $searcher.Filter = "(objectCategory=Computer)" $proplist = ("name","pwdLastSet", "Distinguishedname") foreach ($i in $propList){$prop=$searcher.PropertiesToLoad.Add($i)} $results = $searcher.FindAll() foreach ($result in $results){ $pwdlastset=[Int64]($result.properties.Item("pwdlastset")[0]) $pwdAge=New-TimeSpan $([datetime]::FromFileTime([int64]::Parse($pwdlastset))) $(Get-Date) if($pwdAge.days -gt 60){ $obj = New-Object System.Object $obj | Add-Member -type NoteProperty -name Name -value $($result.properties.Item("Name")) $obj | Add-Member -type NoteProperty -name Alter -value $($pwdAge.days) $obj | Add-Member -type NoteProperty -name DN -value $($result.properties.Item("Distinguishedname")) $store += $obj } } return $store;
Exchange Powershell
Die Powershell und auch die Exchange-Verwaltungsshell nutzen s.g. Cmdlets. Diese setzt sich aus einem Verb und einem Hauptwort zusammen. Zum Beispiel Get-Mailbox
oder Set-Mailbox
. Die Exchnage CMDlets funktionieren nur in der Exchange-Verwaltungsshell und nicht in der normalen Powershell.
Postfach durch E-Mail Adresse finden
Folgender Befehlt gibt alle Postfächer aus, welche die Zeichenfolge „NACHNAME“ in einer der zugewiesenen Email-Adressen enthalten.
Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'" Name Alias ServerName ProhibitSendQuota ---- ----- ---------- ----------------- NACHNAME, V. (ABT) nachname mailserver unlimited
Um nicht nur eine kurze tabelarische Übersicht über diese Postfächer zu bekommen, sondern alle jeweiligen Details anzuzeigen wird | format-list
an den Befehl gehängt.
Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'" | format-list Database : MAILERVER\SG1\SG1DB01 DeletedItemFlags : DatabaseDefault UseDatabaseRetentionDefaults : True RetainDeletedItemsUntilBackup : False [...] Name : Nachname, V. (Abt.) DistinguishedName : CN=Nachname\, V. (Abt.),OU=OU-User,DC=Domain,DC=TLD Identity : Domain.TLD/OU-User/Nachname, V. (Abt.) Guid : f5ef952f-b491-443f-a392-e3617731c48f ObjectCategory : Domain.TLD/Configuration/Schema/Person ObjectClass : {top, person, organizationalPerson, user} WhenChanged : 24.03.2010 11:06:27 WhenCreated : 01.04.2008 11:53:17
Ein alternativer, aber sehr unperformater, Lösungsweg ist der folgende.
Zuerst werden alle Postfächer ausgelesen und im nachhinein gefiltert. Je mehr Postfächer man hat um so länger dauert der Befehl dann natürlich. Auch hier kann mit | format-list
eine detailierter Ansicht erzeugt werden
Get-Mailbox | where {$_.EmailAddresses -match "NACHNAME"} Name Alias ServerName ProhibitSendQuota ---- ----- ---------- ----------------- NACHNAME, V. (ABT) nachname mailserver unlimited
Getrennte Mailboxen auflisten
Anders als in der Onlinehilfe beschrieben, tauchen getrennte Mailboxen oft nicht von selbst im Zweig “Getrenntes Postfach” der Verwaltungskonsole auf. Ähnlich wie in den Vorgängerversionen kann man Exchange dann auffordern, nach den Mailboxen zu suchen. Hierzu verwendet man in der Exchange-Shell folgendes Kommando:
Clean-MailboxDatabase "Name-der-Datenbank"
Danach sollten die getrennten Mailboxen auch im GUI sichtbar sein. Um diese direkt per PowerShell aufzulisten, eignet sich folgendes Kommando:
Get-MailboxStatistics -server SERVERNAME | Where {$_.DisconnectDate -ne $null}
Wichtig ist dabei der Servername – die TechNet-Dokumentation gibt das leider falsch an.
Getrennte Mailboxen entstehen, wenn man eine Mailbox von dem zugehörigen AD-Benutzerkonto trennt (Befehl “Deaktivieren” in der Konsole bzw. “Disable-Mailbox” in der Shell). Im Gegensatz zum Entfernen einer Mailbox bleibt das AD-Benutzerkonto hierbei erhalten.
Quelle: http://www.faq-o-matic.net/2010/03/31/exchange-2010-getrennte-mailboxen-auflisten/
Postfachgrößen
Postfachgröße eines bestimmten Postfachs
Get-MailboxStatistics kragem | ft DisplayName, ItemCount, TotalItemSize -AutoSize DisplayName ItemCount TotalItemSize ----------- --------- ------------- Nachname, V. 130 16402905B Müller, F. 2 27172B
Postfachgrößen aller Postfächer sortiert und in Größe in MB
Get-MailboxDatabase | Get-MailboxStatistics | Sort-Object -Descending -Property TotalItemSize | ft DisplayName, ItemCount, @{Expression={$_.TotalItemSize.Value.ToMb()};label="Size(MB)"} -autosize DisplayName ItemCount Size(MB) ----------- --------- -------- Nachname, V. 9170 1081 Müller, F. 1224 935
Postfachgrößen als CSV (Komma) exportieren
Get-MailboxStatistics | Select-Object DisplayName, LastLogonTime, LastLogoffTime, ItemCount, TotalItemSize, @{Expression={$_.TotalItemSize.Value.ToMb()}} | export-csv \\server\temp\export.txt -notype
Zertifikat erneuern
TODO
To renew the certificate perform following steps:
Open Exchange Management Shell
Check status of existing certificate(s). Make note of the „Thumbprint“ value:
Get-ExchangeCertificate | List
Get a new self-signed certificate. Use „Thumbprint“ from the old certificate:
Get-ExchangeCertificate –thumbprint "C9A4BB6094A167BD324618D8492C4C5281FDD34A" | New-ExchangeCertificate
Examine properties of the new certificate. Make sure all required services are enabled.
Get-ExchangeCertificate | List
If some of the required services are not enabled you can enable them with following cmdlet (Use „Thumbprint“ from the new certificate):
Enable-ExchangeCertificate -thumbprint "A0BB986024A347BAC24438D8432C1B123AFDF11B" -services IIS, POP, SMTP, IMAP
Ensure that all required services are working with new certificate and then remove the old certificate:
Remove-ExchangeCertificate -thumbprint "C9A4BB6094A167BD324618D8492C4C5281FDD34A"
VMware RDM Lun ID
$RDMs = @() foreach($vm in (Get-View -ViewType "VirtualMachine")) { foreach($dev in ($vm.Config.Hardware.Device | where {($_.gettype()).Name -eq "VirtualDisk"})) { if(($dev.Backing.CompatibilityMode -eq "physicalMode") -or ($dev.Backing.CompatibilityMode -eq "virtualMode")) { $objRdm = "" | select VMName, VMDK, UUID, DiskLabel, SCSIBus, SCSIDevice, Mode $objRdm.VMName = $vm.Name $objRdm.VMDK = $dev.Backing.FileName $objRdm.UUID = $dev.Backing.LunUuid $objRdm.DiskLabel = $dev.DeviceInfo.Label $objRdm.SCSIBus = ( $vm.Config.Hardware.Device | ? { $_.Key -eq $dev.ControllerKey }).BusNumber $objRdm.SCSIDevice = $dev.UnitNumber $objRdm.Mode = $dev.Backing.CompatibilityMode $RDMs += $objRdm } } } foreach ($cluster in (Get-View -ViewType "ClusterComputeResource")) { $vmhostsview = $cluster.host | % { Get-View $_ } $vmhostview = $vmhostsview | Select -first 1 $ScsiLuns = $vmhostsview | % { $_.Config.StorageDevice.ScsiLun } | Select -unique * $UUIDs = $ScsiLuns | Select -unique UUID $Datastores = $vmhostsview | % { $_.Config.FileSystemVolume.MountInfo } | % { $_.Volume } | Select -Unique * $HostLUN = $vmhostsview | % { $_.Config.StorageDevice.ScsiTopology.Adapter } | % { $_.Target | % { $_.LUN } } | Select -unique * foreach ($UUID in $UUIDs) { $Lun = $ScsiLuns | ? { $_.UUID -eq $UUID.UUID } | Select -first 1 $objVolume = "" | Select Cluster, VolumeName, CanonicalName, DisplayName, VolumeType, CapacityGB, BlockSizeMb, VMFSVersion, LunType, Vendor, Model, HostLUN, VM, VMDiskLabel, VMSCSIBus, VMSCSIDevice, Revision, ScsiLevel, UUID $objVolume.Cluster = $cluster.Name $objVolume.CanonicalName = $Lun.CanonicalName $objVolume.HostLUN = ($HostLUN | ? { $_.ScsiLun -eq $Lun.Key } | select -unique LUN).LUN $objVolume.UUID = $Lun.Uuid $objVolume.CapacityGB = $Lun.Capacity.Block * $Lun.Capacity.BlockSize / 1GB $objVolume.DisplayName = $Lun.DisplayName $objVolume.LunType = $Lun.LunType $objVolume.Vendor = $Lun.Vendor $objVolume.Model = $Lun.Model $objVolume.Revision = $Lun.Revision $objVolume.ScsiLevel = $Lun.ScsiLevel foreach ($vol in $Datastores) { if ($vol.extent | % { $_.diskname -eq $Lun.CanonicalName}) { $objVolume.VolumeName = $vol.Name $objVolume.BlockSizeMb = $vol.BlockSizeMb $objVolume.VMFSVersion = $vol.Version $objVolume.VolumeType = "vmfs" } } foreach ($rdm in $RDMs) { if ($Lun.Uuid -eq $rdm.UUID) { $objVolume.VolumeName = $rdm.VMDK $objVolume.VM = $rdm.VMName $objVolume.VMDiskLabel = $rdm.DiskLabel $objVolume.VMSCSIBus = $rdm.SCSIBus $objVolume.VMSCSIDevice = $rdm.SCSIDevice if ($rdm.Mode -eq "virtualMode" ) { $objVolume.VolumeType = "rdm" } if ($rdm.Mode -eq "physicalMode") { $objVolume.VolumeType = "rdmp" } } } $objVolume } }
[vSphere PowerCLI] C:\> .\rdm.ps1 | where {$_.HostLUN -match "220"}