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 14:47]
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.
  
-===== Windows Powershell =====+Ausgabe aus mehreren Befehlen zusammen
 <code powershell> <code powershell>
-Import-Module activedirectory+Get-VM | Get-NetworkAdapter |  
 +Where-object {$_.Type -ne "Vmxnet3"} |  
 +Select @{N="VM";E={$_.Parent.Name}},Name,Type 
 +</code>
  
-Search-ADAccount –LockedOut 
  
-Search-ADAccount -LockedOut | Unlock-ADAccount+===== Windows Powershell ===== 
 +==== Remote Session ==== 
 +  Enter-PSSession -ComputerName $computerName -Credential user@domain.local
  
-$then (Get-Date).AddDays(-60) # The 60 is the number of days from today since the last logon.+  $cred = Get-Credential user@domain.local 
 +  Enter-PSSession -ComputerName $computerName -Credential $cred
  
-Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $then}+==== Get Registry Value ==== 
 +  Get-ItemPropertyValue "$path" -name "$key"
  
-Set-ADComputer -Enabled $false +==== Log Date ==== 
-</code>+  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 +
-$searcher.SearchRoot = $domain +
-$searcher.PageSize = 100 +
-$searcher.Filter = "(objectCategory=Computer)"+
  
-$proplist ("name","pwdLastSet", "Distinguishedname") +$oldPrintserver = "svrv-print# OLD Printserver !Hostname! 
-foreach ($i in $propList){$prop=$searcher.PropertiesToLoad.Add($i)}+$newPrintserver "print" # New Printserver !Hostname!
  
-$results = $searcher.FindAll()+foreach($oldPrinter in $Printers
 +    Write-Host "Bearbeite Drucker: "$oldPrinter.Name
  
-foreach ($result in $results){ +    if( $oldPrinter.Name.StartsWith("\\$oldPrintserver") { 
- $pwdlastset=[Int64]($result.properties.Item("pwdlastset")[0]+        Write-Host "Migriere Drucker: "$oldPrinter.Name 
- $pwdAge=New-TimeSpan $([datetime]::FromFileTime([int64]::Parse($pwdlastset))) $(Get-Date) +        $pos = $oldPrinter.Name.LastIndexOf("\") 
- if($pwdAge.days -gt 60){ +        $PrinterHost = $oldPrinter.Name.Substring(0, $pos
-    $obj = New-Object System.Object +        $PrinterName = $oldPrinter.Name.Substring($pos+1) 
-    $obj | Add-Member -type NoteProperty -name Name -value $($result.properties.Item("Name")+ 
-    $obj | Add-Member -type NoteProperty -name Alter -value $($pwdAge.days+        Write-Host "Verbinde Drucker \\$newPrintserver\$PrinterName" 
-    $obj | Add-Member -type NoteProperty -name DN -value $($result.properties.Item("Distinguishedname")) + 
-    $store += $obj +        $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." 
 +        } 
 +     }
 } }
  
-return $store;+Write-Host "Press any key to continue ..." 
 +$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
 </code> </code>
 +
 +===== Active Directory =====
 +
 +==== 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 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 143: 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 161: Zeile 266:
  
  
-===== VMware RDM Lun ID =====+===== VMware===== 
 +==== RDM + LUN ID ==== 
 <code> <code>
 $RDMs = @() $RDMs = @()
pub/powershell.1432126046.txt.gz · Zuletzt geändert: 2015/05/20 14:47 von Marco Krage