Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
pub:powershell [2013/06/14 10:24] – Externe Bearbeitung 127.0.0.1pub: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
  
-noch nix da ;-)+  $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.
  
-===== AD Powershell ===== 
 <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 =====
  
-===== 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 46: Zeile 106:
 Folgender Befehlt gibt alle Postfächer aus, welche die Zeichenfolge "NACHNAME" in einer der zugewiesenen Email-Adressen enthalten. Folgender Befehlt gibt alle Postfächer aus, welche die Zeichenfolge "NACHNAME" in einer der zugewiesenen Email-Adressen enthalten.
 <code> <code>
-[PS] C:\>Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'"+Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'"
  
 Name                      Alias                ServerName       ProhibitSendQuota Name                      Alias                ServerName       ProhibitSendQuota
Zeile 56: Zeile 116:
 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. 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.
 <code> <code>
-[PS] C:\>Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'" | format-list+Get-Mailbox -filter "EmailAddresses -like '*NACHNAME*'" | format-list
  
 Database                             : MAILERVER\SG1\SG1DB01 Database                             : MAILERVER\SG1\SG1DB01
Zeile 77: Zeile 137:
 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 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
 <code> <code>
-[PS] C:\>Get-Mailbox | where {$_.EmailAddresses -match "NACHNAME"}+Get-Mailbox | where {$_.EmailAddresses -match "NACHNAME"}
  
 Name                      Alias                ServerName       ProhibitSendQuota Name                      Alias                ServerName       ProhibitSendQuota
Zeile 108: Zeile 168:
 Postfachgröße eines bestimmten Postfachs Postfachgröße eines bestimmten Postfachs
 <code> <code>
-[PS] C:\> get-MailboxStatistics kragem | ft DisplayName, ItemCount, TotalItemSize -AutoSize+Get-MailboxStatistics kragem | ft DisplayName, ItemCount, TotalItemSize -AutoSize
  
 DisplayName                                         ItemCount TotalItemSize DisplayName                                         ItemCount TotalItemSize
Zeile 117: Zeile 177:
  
  
-Postfachgrößen aller Postfächer sortiert und in größe in MB+Postfachgrößen aller Postfächer sortiert und in Größe in MB
 <code> <code>
-[PS] C:> get-MailboxStatistics | Sort-Object -Descending -Property TotalItemSize | ft DisplayName, ItemCount, @{Expression={$_.TotalItemSize.Value.ToMb()};label="Size(MB)"} -autosize+Get-MailboxDatabase | Get-MailboxStatistics | Sort-Object -Descending -Property TotalItemSize | ft DisplayName, ItemCount, @{Expression={$_.TotalItemSize.Value.ToMb()};label="Size(MB)"} -autosize
  
 DisplayName                                         ItemCount Size(MB) DisplayName                                         ItemCount Size(MB)
Zeile 129: Zeile 189:
 Postfachgrößen als CSV (Komma) exportieren Postfachgrößen als CSV (Komma) exportieren
 <code> <code>
-[PS] C:> get-MailboxStatistics | Select-Object DisplayName, LastLogonTime, LastLogoffTime, ItemCount, TotalItemSize, @{Expression={$_.TotalItemSize.Value.ToMb()}} | export-csv \\server\temp\export.txt -notype+Get-MailboxStatistics | Select-Object DisplayName, LastLogonTime, LastLogoffTime, ItemCount, TotalItemSize, @{Expression={$_.TotalItemSize.Value.ToMb()}} | export-csv \\server\temp\export.txt -notype
 </code> </code>
  
  
-Zertifika erneuern+==== 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 ====
 TODO TODO
 To renew the certificate perform following steps: To renew the certificate perform following steps:
Zeile 150: Zeile 266:
  
  
-===== VMware RDM Lun ID =====+===== VMware===== 
 +==== RDM + LUN ID ==== 
 <code> <code>
 $RDMs = @() $RDMs = @()
pub/powershell.1371198247.txt.gz · Zuletzt geändert: 2013/12/06 19:12 (Externe Bearbeitung)