Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
pub:powershell [2015/05/20 11:54]
Marco Krage
pub:powershell [2019/05/18 11:49] (aktuell)
Marco Krage
Zeile 1: Zeile 1:
 ====== Powershell ====== ====== Powershell ======
 +
 +Display Powershell Version
 +  $PSVersionTable.PSVersion
 +If the variable does not exist, it is safe to assume the engine is version 1.0.
 +
 +Ausgabe aus mehreren Befehlen zusammen
 +<code powershell>
 +Get-VM | Get-NetworkAdapter | 
 +Where-object {$_.Type -ne "Vmxnet3"} | 
 +Select @{N="VM";E={$_.Parent.Name}},Name,Type
 +</code>
  
  
 ===== Windows Powershell ===== ===== Windows Powershell =====
 +==== Remote Session ====
 +  Enter-PSSession -ComputerName $computerName -Credential user@domain.local
  
-Import-Module activedirectory+  $cred = Get-Credential user@domain.local 
 +  Enter-PSSession -ComputerName $computerName -Credential $cred
  
-Search-ADAccount –LockedOut+==== Get Registry Value ==== 
 +  Get-ItemPropertyValue "$path" -name "$key"
  
-Search-ADAccount -LockedOut | Unlock-ADAccount+==== Log Date ==== 
 +  Write-Host (get-date).DateTime
  
 +==== Delete RAW if no matching JPG exists ====
 +  Get-ChildItem *.arw | % { if (-not (Test-Path $_.Basename+".jpg")) {Remove-Item $_} }
  
  
  
-===== AD Powershell =====+==== Drucker Migration ==== 
 + 
 +Drucker von altem Printserver zu neuem Printserver migieren inklusive Standarddrucker. 
 <code powershell> <code powershell>
-$store @() +$Printers Get-WmiObject win32_printer 
-$domain New-Object System.DirectoryServices.DirectoryEntry + 
-$searcher = New-Object System.DirectoryServices.DirectorySearcher +$oldPrintserver "svrv-print" # OLD Printserver !Hostname! 
-$searcher.SearchRoot = $domain +$newPrintserver "print"New Printserver !Hostname! 
-$searcher.PageSize 100 + 
-$searcher.Filter = "(objectCategory=Computer)"+foreach($oldPrinter in $Printers) { 
 +    Write-Host "Bearbeite Drucker: "$oldPrinter.Name 
 + 
 +    if( $oldPrinter.Name.StartsWith("\\$oldPrintserver") ) { 
 +        Write-Host "Migriere Drucker: "$oldPrinter.Name 
 +        $pos = $oldPrinter.Name.LastIndexOf("\") 
 +        $PrinterHost $oldPrinter.Name.Substring(0, $pos) 
 +        $PrinterName = $oldPrinter.Name.Substring($pos+1) 
 + 
 +        Write-Host "Verbinde Drucker \\$newPrintserver\$PrinterName" 
 + 
 +        $WMIPrinter [WMIClass]"\\.\root\cimv2:Win32_Printer" 
 +        $res $WMIPrinter.AddPrinterConnection("\\$newPrintserver\$PrinterName")
  
-$proplist ("name","pwdLastSet", "Distinguishedname"+        $newPrinter Get-WMIObject -query "Select * From Win32_Printer Where Name '\\\\$newPrintserver\\$PrinterName'";
-foreach ($i in $propList){$prop=$searcher.PropertiesToLoad.Add($i)}+
  
-$results = $searcher.FindAll()+        if($newPrinter) { 
 +          if($oldPrinter.Default) { 
 +            Write-Host "Setzte Standarddrucker: \\$newPrintserver\$PrinterName" 
 +            $newPrinter.SetDefaultPrinter() 
 +          }
  
-foreach ($result in $results){ +          Write-Host "Lösche Drucker: "$oldPrinter.Name 
- $pwdlastset=[Int64]($result.properties.Item("pwdlastset")[0]+          $oldPrinter.Delete() 
- $pwdAge=New-TimeSpan $([datetime]::FromFileTime([int64]::Parse($pwdlastset))) $(Get-Date) +        }else
- if($pwdAge.days -gt 60)+          Write-Host "Fehler beim Verbinden"$oldPrinter.Name" wurde nicht gelöscht." 
-    $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;+Write-Host "Press any key to continue ..." 
 +$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
 </code> </code>
  
 +===== Active Directory =====
  
-===== Exchange Powershell =====+==== Gesperrte Benutzer ==== 
 +<code powershell> 
 +Import-Module activedirectory 
 + 
 +Search-ADAccount –LockedOut 
 + 
 +Search-ADAccount -LockedOut | Unlock-ADAccount 
 +</code> 
 + 
 + 
 +==== Alte Computerkonten finden ==== 
 +<code powershell> 
 +$then = (Get-Date).AddDays(-60) # The 60 is the number of days from today since the last logon. 
 + 
 +Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $then} 
 + 
 +Set-ADComputer -Enabled $false 
 +</code> 
 + 
 + 
 + 
 +===== Exchange =====
  
 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. 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.
Zeile 137: Zeile 192:
 </code> </code>
  
 +
 +==== Datenbank ====
 +Übersicht über Datenbanken und deren Größe.
 +  Get-MailboxDatabase -Status | ft name,server,databasesize
 +
 +
 +==== Postfach ====
 +Postfach suchen
 +  Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'"
 +
 +Getrennte Mailboxen auflisten
 +  Get-MailboxStatistics -server SERVERNAME | Where {$_.DisconnectDate -ne $null}
 +
 +Mailbox Cleanup um getrennte Postfächer sofort in der GUI anzuzeigen
 +  Clean-MailboxDatabase "Name-der-Datenbank"
 +
 +Postfachgröße
 +  Get-MailboxStatistics kragem | ft DisplayName, ItemCount, TotalItemSize -AutoSize
 +
 +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
 +
 +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
 +  
 +==== Postfachfunktionen ====
 +Postfächer mit Active Sync
 +  Get-CASMailbox | where {$_.ActiveSyncEnabled -eq $true }
 +
 +Postfächer mit OWA
 +  Get-CASMailbox | where {$_.OWAEnabled -eq $true }
 +
 +==== Geräte ====
 +Alle Geräte-Details anzeigen
 +  Get-ActiveSyncDevice | fl UserDisplayName, DeviceId, DeviceType, DeviceModel, DeviceOS, FriendlyName, Name, DeviceAccessState
 +
 +Alle Geräte-Details einer Mailbox anzeigen
 +  Get-ActiveSyncDevice -Mailbox "kragem" | fl UserDisplayName, DeviceId, DeviceType, DeviceModel, DeviceOS, FriendlyName, Name, DeviceAccessState
 +
 +Alle Geräte einer Mailbox anzeigen mit LastSync Datum. Alte Geräte oben.
 +  Get-ActiveSyncDeviceStatistics -Mailbox "kragem" | fl DeviceID, DeviceType, DeviceModel, FirstSyncTime, LastSuccessSync
 +
 +Alte Geräte finden
 +  Get-ActiveSyncDevice -Result Unlimited | Get-ActiveSyncDeviceStatistics | Where {$_.LastSuccessSync -le (Get-Date).AddDays("-30")} | fl DeviceID, DeviceType, DeviceModel, FirstSyncTime, LastSuccessSync, Identity
 +
 +zum löschen der Geräte statt an ''Format-List'' an ''Remove-ActiveSyncDevice'' pipen oder manuell löschen
 +
 +Device manuell über ID löschen (Achtung: Wird aus allen evtl. aktiven Mailboxen gelöscht!)
 +  Get-ActiveSyncDevice | where {$_.DeviceId -eq "1140B5A5508D422741F2E87CE114E115"} | Remove-ActiveSyncDevice
 +
 +Device aus bestimmter Mailbox löschen (über Identity)
 +  Get-ActiveSyncDevice | where {$_.Identity -eq "Marien-kh.MKH/Haus/Hilsmann, M. (PDL)/ExchangeActiveSyncDevices/iPhone§O9VKDO3G7D3HJ0V8JQ9V0TSTGO"} | Remove-ActiveSyncDevice
 +
 +http://technet.microsoft.com/en-us/library/bb266947(v=exchg.141).aspx
 +  Set-CasMailbox pponzeka –ActiveSyncAllowedDeviceIDs number1,number2
 +  Set-CasMailbox pponzeka –ActiveSyncAllowedDeviceIDs:$null
  
 ==== Zertifikat erneuern ==== ==== Zertifikat erneuern ====
Zeile 155: Zeile 266:
  
  
-===== VMware RDM Lun ID =====+===== VMware===== 
 +==== RDM + LUN ID ==== 
 <code> <code>
 $RDMs = @() $RDMs = @()
pub/powershell.1432115677.txt.gz · Zuletzt geändert: 2015/05/20 11:54 von Marco Krage