Exchange Server, Powershell, Skriptování

Scheduling Mailbox Moves in Exchange 2010

MoveMailbox.ps1$UserFile = "users.txt"
$MyData = Import-Csv $UserFile -Delimiter ;
 
ForEach ($item in $MyData){
   $UserIdentity = $($item.UserIdentity)
   $TargetDatabase = $($item.TargetDatabase)
   $BadTolerance = $($item.BadTolerance)
   if ($UserIdentity -match "^*[a-z0-1]@domain.cz$") {
      New-MoveRequest -Identity $UserIdentity -TargetDatabase $TargetDatabase -BadItemLimit $BadTolerance
      } else {
      Write-Host "Bad user login $UserIdentity!" -foregroundcolor "red"
    }
}

users.txtUserIdentity;TargetDatabase;BadTolerance
user@domain.cz;exch10_db_1;10

Command to schedule:powershell -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Scripts\MoveMailbox.ps1"

Powershell, Skriptování

Regular Expression

PS C:\> "XYZ\p107225" -cmatch "^[a-zA-Z]{2,3}\\p10[0-9]{4}$")

http://blogs.technet.com/b/technetczsk/archive/2010/02/15/serial-windows-powershell-ps-pro-programatory-cast-6.aspx
http://www.regular-expressions.info/

Batch, Powershell, Skriptování

Spustit jen v pátek

Občas se hodí, když se něco musí spustit jen v konkrétní den týdne, např. v pátek:

řešení v batch
for /f "tokens=1 delims= " %%a in ('date/t') do set day=%%a
if /i %day% equ Fri (echo je patek, tak to spustim) else (echo neni patek)

řešení batch + powershell
for /f "tokens=1" %%i in ('powershell -command "&{[int](Get-Date).DayOfWeek}"') do set denTydne=%%i
if /i %denTydne% equ 5 (echo je patek, tak to spustim) else (echo neni patek)

řešení powershell
$denTydne = (Get-Date).DayOfWeek
if ($denTydne -ne 5) {"neni patek"} else {"je patek, tak to spustim"}

pozn. pokud bude OS lokalizovaný v ČJ je potřeba uložit skript v kódování Latin II (CP852), aby bylo zobrazení diakritiky správně interpretováno (např. Pátek)