Скрипт Powershell: управление правами на папки в почтовом ящике

Отличие этих скриптов в том, что они получают список папок я почтовом ящике и продавливают на них права.

Скрипт для добавления прав на папки  в ящике:

[CmdletBinding()]
param (
	[Parameter( Mandatory=$true)]
	[string]$Mailbox,

	[Parameter( Mandatory=$true)]
	[string]$User,
  	[Parameter( Mandatory=$true)]
	[string]$Access
)

Читать полностью »

Популярность: 1%

Скрипт Powershell: размер папок почтовых ящиков

Этот скрипт выводит размер в МБ папки Inbox для всех почтовых ящиков:

#Get size of Inbox folders in all mailboxes
$mailboxes = @(Get-Mailbox -ResultSize Unlimited)
$report = @()

Читать полностью »

Популярность: 1%

Скрипт Powershell для выгрузки DN, SMTP адреса, почтового сервера для списка пользователей

Не забудьте перед запуском подгрузить снапин Exchange, если вы запускаете не из Exchange Powershell консоли. Список пользователей предоставляется в виде списка их логинов (accounts names) в столбик.

#Add-PSSnapin -name "Microsoft.Exchange.Management.PowerShell.E2010"
$date = date | Out-File D:\AD\mbx_list.txt -Append
$users = get-content -Path (Read-Host -Prompt "Path to TXT file with users (usually c:\temp\users.txt)" -ErrorAction Stop)
foreach($user in $users)
{
$list = ((Get-Mailbox $user.trim()) | select alias,name,PrimarySmtpAddress,servername,LegacyExchangeDN)
$line = ($list.alias, $list.name, $list.PrimarySmtpAddress, $list.servername, $list.LegacyExchangeDN -join "`t")
$line | Out-File D:\AD\smtp_address_list.txt -Append
}

Если вам требуется выгрузить только один параметр, например, DN, то код будет проще:

Читать полностью »

Популярность: 1%

Скрипт для пересоздания профиля пользователя

При запуске необходимо указать путь к папке профиля (обычно c:\users\username).

@echo off
echo.
:enteruname
set /p uname=Please enter userprofile folder name:
if not defined uname goto enteruname
echo.
:rename
echo 1) Renaming of user profile
FOR /F %%a IN ('psgetsid \\%cname% %uname% /accepteula') DO set sid=%%a
echo %uname%'s SID is %sid%
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%sid%" /v ProfileImagePath') do set profilepath=%%a
echo User profile is located in %profilepath%
echo.
if exist %profilepath%_old ren %profilepath%_old %uname%_old_%random%
ren %profilepath% %uname%_old
if %ERRORLEVEL% EQU 0 (echo User profile renamed from %uname% to %uname%_old & goto ren_ok) else (echo Failed to rename profile folder, please restart computer now!)
echo Press ANY KEY to restart a computer and then login under administrator account!
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v !RecreateProfile /t REG_SZ /d c:\temp\recreate_user_profile.bat /f
pause
shutdown -r -t 0 -f
goto rename
echo.

Читать полностью »

Популярность: 1%

Скрипт для решения проблемы с TEMP профилями

Скрипт решает проблему, когда пользователь логинится под своим аккаунтом, а попадет в профиль TEMP.

@echo off
echo.
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" > c:\temp\profiles.txt
findstr "bak" c:\temp\profiles.txt > c:\temp\sidbak.txt
echo Registry backup keys found:
type c:\temp\sidbak.txt
pause
for /f "tokens=*" %%a in (c:\temp\sidbak.txt) do reg delete "%%a" /f
if %ERRORLEVEL% EQU 0 (echo Registry patched.) else (echo Failed to patch registry.)
echo.
timeout 5

 

Популярность: 1%

Скрипт для удаления локальной адресной книги Outlook

Написан для Windows 7 и Windows XP, но его можно легко модифицировать, изменив проверку версии ОС. Проверяет запущен ли MS Lync / Communicator.

@echo off
setlocal
echo Please make sure MS Outlook and MS Lync are closed.
pause
:Outlookcheck
for /f "skip=3 Tokens=1" %%a in ('tasklist /fi "imagename eq outlook.exe"') do (
if %errorlevel% EQU 0 (goto outexit) else (goto Comcheck)
)

Читать полностью »

Популярность: 1%

Скрипт для очистки кэша MS Outlook

Подходит для версий Outlook 2007, 2010, 2013, проверяет версию Office (должен быть установлен).

@echo off
setlocal
set regexe=%SystemRoot%\System32\Reg.exe
set officepath15="%PROGRAMFILES%\Microsoft Office\Office15\excel.exe"
set officepath14="%PROGRAMFILES%\Microsoft Office\Office14\excel.exe"
set officepath12="%PROGRAMFILES%\Microsoft Office\Office12\excel.exe"
if exist %officepath15% (set rkey=HKCU\Software\Microsoft\Office\15.0\Outlook\Security) else (
if exist %officepath14% (set rkey=HKCU\Software\Microsoft\Office\14.0\Outlook\Security) else (
set rkey=HKCU\Software\Microsoft\Office\12.0\Outlook\Security)
)
set rvalue="OutlookSecureTempFolder"
for /f "Tokens=3*" %%a in ('%regexe% QUERY "%rkey%" /v %rvalue% 2^>NUL') do (
set rdata=%%a
set edata=%%b
)
set full=%rdata% %edata%
echo %full%
pause
del "%full%\*.*" /f /s /q
if %ERRORLEVEL% EQU 0 (echo Outlook temp files deleted...) else (echo No temp files deleted...)
ping -n 5 localhost > nul
endlocal
exit

 

Популярность: 1%

Скрипт Powershell: получить размер папки, включая все подпапки

Скрипт создает Excel файл, куда выводит результат.

# Size of folder including subfolders
$startFolder = read-host -Prompt "enter full path" #c:\temp
if(Test-Path -Path $startFolder)
{
	$length = 0
	$a = New-Object -comobject Excel.Application
	$a.visible = $True
	$b = $a.Workbooks.Add()
	$c = $b.Worksheets.Item(1)
	$c.Cells.Item(1,1) = "Name"
	$c.Cells.Item(1,2) = "Size (MB)"
	$d = $c.UsedRange
	$d.Font.Bold = $True
	$intRow = 3
	$colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)
	$length += $colItems.sum
	$c.Cells.Item(2,1) = $startFolder
	$c.Cells.Item(2,2) =  "{0:N2}" -f ($colItems.sum / 1MB)
	$colItems = (Get-ChildItem $startFolder  | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
	foreach ($i in $colItems)
	{
		$objFSO = New-Object -com  Scripting.FileSystemObject
		$c.Cells.Item($intRow,1) = $i.FullName
		$c.Cells.Item($intRow,2) =  "{0:N2}" -f (($objFSO.GetFolder($i.FullName).Size) / 1MB)
		$length += $objFSO.GetFolder($i.FullName).Size
		$intRow++
	}
	$c.Cells.Item($intRow,1) = "Total Size"
	$c.Cells.Item($intRow,2) =  "{0:N2}" -f ($length / 1MB)
	$d = $c.UsedRange
	$d.EntireColumn.AutoFit()
}
else
{
	write-host "Folder $startFolder does NOT exist" -BackgroundColor Red
}

Популярность: 1%

Справочник по командам PowerShell для работы с MS Exchange

Full access to mailbox / Полный доступ к почтовому яшику

  • Получить список текуших прав
    get-Mailbox mailboxalias | fl
  • Добавить полный доступ пользователю username на ящик пользователя «Surname, Firstname»
    Add-MailboxPermission -Identity 'CN=Surname\, Firstname,OU=Disabled Accounts,OU=Users,OU=OU01,DC=CORP,DC=COMPANY,DC=com' -User 'COMPANYCORP\username' -AccessRights 'FullAccess'
  • Убрать права полный доступ пользователя username на ящик пользователя «Surname, Firstname»
    Remove-MailboxPermission -Identity 'CN=Surname\, Firstname,OU=Users,OU=OU03,DC=CORP,DC=COMPANY,DC=com' -User 'COMPANYCORP\username' -InheritanceType 'All' -AccessRights 'FullAccess'

Читать полностью »

Популярность: 2%