Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
pub:powershell [2015/05/20 15:50] Marco Kragepub: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 =====
-Gesperrte Benutzer+==== Remote Session ==== 
 +  Enter-PSSession -ComputerName $computerName -Credential user@domain.local 
 + 
 +  $cred = Get-Credential user@domain.local 
 +  Enter-PSSession -ComputerName $computerName -Credential $cred 
 + 
 +==== Get Registry Value ==== 
 +  Get-ItemPropertyValue "$path" -name "$key" 
 + 
 +==== 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 $_} } 
 + 
 + 
 + 
 +==== Drucker Migration ==== 
 + 
 +Drucker von altem Printserver zu neuem Printserver migieren inklusive Standarddrucker. 
 + 
 +<code powershell> 
 +$Printers = Get-WmiObject win32_printer 
 + 
 +$oldPrintserver = "svrv-print" # OLD Printserver !Hostname! 
 +$newPrintserver = "print" # New Printserver !Hostname! 
 + 
 +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"
 + 
 +        $newPrinter = Get-WMIObject -query "Select * From Win32_Printer Where Name = '\\\\$newPrintserver\\$PrinterName'"; 
 + 
 +        if($newPrinter) { 
 +          if($oldPrinter.Default) { 
 +            Write-Host "Setzte Standarddrucker: \\$newPrintserver\$PrinterName" 
 +            $newPrinter.SetDefaultPrinter() 
 +          } 
 + 
 +          Write-Host "Lösche Drucker: "$oldPrinter.Name 
 +          $oldPrinter.Delete() 
 +        }else{ 
 +          Write-Host "Fehler beim Verbinden. "$oldPrinter.Name" wurde nicht gelöscht." 
 +        } 
 +     } 
 +
 + 
 +Write-Host "Press any key to continue ..." 
 +$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown"
 +</code> 
 + 
 +===== Active Directory ===== 
 + 
 +==== Gesperrte Benutzer ====
 <code powershell> <code powershell>
 Import-Module activedirectory Import-Module activedirectory
Zeile 12: Zeile 86:
 </code> </code>
  
 +
 +==== Alte Computerkonten finden ====
 <code powershell> <code powershell>
-Alter Computer Konten finden 
 $then = (Get-Date).AddDays(-60) # The 60 is the number of days from today since the last logon. $then = (Get-Date).AddDays(-60) # The 60 is the number of days from today since the last logon.
  
Zeile 22: Zeile 97:
  
  
-===== Exchange Powershell =====+ 
 +===== 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 116: 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 134: Zeile 266:
  
  
-===== VMware RDM Lun ID =====+===== VMware===== 
 +==== RDM + LUN ID ==== 
 <code> <code>
 $RDMs = @() $RDMs = @()
pub/powershell.1432129839.txt.gz · Zuletzt geändert: 2015/05/20 15:50 von Marco Krage