Tuesday, April 3, 2012

Delegate cannot create online meeting on behalf

Lync is designed to be used as a complete platform for communications, including instant messaging and voice over IP, so this feature will have some problems when being used for people enabled only for PC-to-PC communication as the delegate settings are on a page shown only for users enabled for enterprise voice.
  1. First you must enable the user for Enterprise Voice on Lync Server Control Panel: 
  2. Start > Programs > Microsoft Lync Server 2010 > Lync Server Control Panel 
  3. On Users tab, search for the username, double-click the user's record in the results pane 
  4. On Telephony, select "Enterprise Voice"
  5. Click Commit 
Then, after waiting about 1 hour for full propagation the user's Lync client will have the Call Forwarding Settings page and on user's computer, you'll need to follow below steps:

  1. Expand the menu, Tools > Call forwarding settings * 
  2. Click Edit my delegate members 
  3. Click Add… 
  4. Find the user you want to grant delegate rights 
  5. IF you want your delegates to receive calls on your behalf, check the box under Receive calls and select your preference on “Ring your delegates after this many seconds”. Otherwise, uncheck the box under Receive calls. 
  6. Click Ok; Click Ok. 

* If the user doesn’t have the option Call Forwarding Settings, restart the computer and try again.
Ler o texto inteiro ►

Thursday, March 29, 2012

How to show recent contacts in Lync

As a former Communicator user, I've always complained about this "new contacts list" in Lync, where are shown only the "Frequent Contacts" instead of the "Recent Contacts" I used to have in Communicator...

Today as per requested by an user, I've made some research and found an article in Technet that showed me the way to have my recent contacts back.

You just need to right-click any contact in your list and then click on Pin to frequent contacts and it will be shown at the top of the list permanently. The pinned and unpinned ones will appear separated by a gray line. You may pin as many contacts as you want.

More info in: http://blogs.technet.com/b/lync/archive/2010/11/19/the-new-and-improved-contact-list.aspx

Hope this helps,
Felipe
Ler o texto inteiro ►

Wednesday, March 28, 2012

How to Disable Outlook’s Junk E-mail Filter


Open the registry editor: go to Start > Run and type “regedit”, no quotes.

In Outlook 2007, set the following key (create the keys in the path if they do not exist *):
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\12.0\Outlook
DWORD: DisableAntiSpam
Change the value to 1 (Hex)
If you use Outlook 2010, the key is (create the keys in the path if they do not exist *):
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\14.0\outlook



Restart your computer once you have the key set.

* To create the key in case it doesn’t exit:
1. In the folder you want to create it, click Edit > New > DWORD (32-bit value)
2. Name the key “DisableAntiSpam”, no quotes
3. Double click the item and set the value to 1 and check Hexadecimal radio button. Click OK.

See ya!
Ler o texto inteiro ►

Wednesday, October 19, 2011

Script to change Site Collection Administrators in SharePoint 2007 with PowerShell

Where I work, we receive several requests for site collection admin change per week, so that's something that always bothered me, since it's not a quick task to be done when you take care of a huge number of sites. That's why I managed to create this script today, it will help me (and my team) to save some time to do other more important (and more interesting) things. Here we go:

First of all, you need to create a ps file named Set-SiteCollectionAdmin.ps1 and paste the code below. You must have another file to put the sites which will have their SCA changed, let's name this one as Site-CollectionAdmin-List.txt.

Here's how the file should be formatted:

 http://mysite1,user1@company.com,user2@company.com  
 http://mysite2,,user3@company.com  
 http://mysite1,user4@company.com,  

Note that on the first line, we are changing both the primary and the secondary SCAs, on the second one we are changing only the secondary SCA and on the third one only the primary.

Below is the source code, commented.

 # Declaring SharePoint assembly so PowerShell can use the SP object model  
 # Read more about Developing a PowerShell Script for SharePoint 2007  
 [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")  
   
 # Getting the info from the file Set-SiteCollectionAdmin-List.txt  
 # Read also about Batch process in PowerShell - Get-Content and Import-CSV cmdlets  
 get-content Set-SiteCollectionAdmin-List.txt | foreach {  
      # Splitting the row by the commas and assigning each part to one variable  
      $row = $_.split(",")  
      # Site URL  
      $url = $row[0].Trim()  
      # Primary SCA email/username  
      $prim = $row[1].Trim()  
      # Secondary SCA email/username  
      $sec = $row[2].Trim()  
        
      Write-Host ""  
   
      # Creating an URI variable to be used on the next method  
      $uri = New-Object Uri($url)  
        
      # Checking whether the mentioned site exists  
      if([Microsoft.SharePoint.SPSite]::Exists($uri))  
      {  
           # Instantiating the site collection  
           $site = New-Object Microsoft.SharePoint.SPSite($url)  
           # Opening the top level web  
           $web = $site.OpenWeb()  
        
           Write-Host $site.URL -foregroundcolor Green  
             
           # Checking whether the primary SCA will be changed  
           if($prim -ne "")  
           {  
                # Checking whether the user already exists in the site.  
                # EnsureUser() will add the user to the site collection if he doesn't exist yet.  
                $primAdm = $web.EnsureUser($prim)  
                # Changing the site owner (primary SCA) to the user.  
                $site.Owner = $primAdm  
                Write-Host "New SCA: $prim"  
           }  
             
           # Same process of the primary SCA  
           if($sec -ne "")  
           {  
                # Checking whether the user already exists in the site.  
                # EnsureUser() will add the user to the site collection if he doesn't exist yet.  
                $secAdm = $web.EnsureUser($sec)  
                # Changing the site secondary contact (secondary SCA) to the user.  
                $site.SecondaryContact = $secAdm  
                Write-Host "New Sec SCA: $sec"  
           }  
      }  
      else # if the site doesn't exist, just jump to the next row  
      {  
           Write-Host "Site $url not found. Jumping to next row." -ForegroundColor Red  
      }  
        
      # Disposing web and site objects from memory  
      $web.Dispose()  
      $site.Dispose()  
 }  

Important: I could only make this work by running powershell as the farm account. Any suggestions of how to do it without needing the would be great.
Ler o texto inteiro ►

Batch process in PowerShell - Get-Content and Import-CSV cmdlets

One of the most important, easy and useful things I see in PowerShell is the possibility to easily process several requests in batch, saving a lot of time. In this article I'm going to explain in this article how to get information from a TXT file and process anything with it using Get-Content cmdlet and also how to get information from a CSV file using the Import-CSV cmdlet.

Get-Content cmdlet:

 PS C:\> Get-Content MyTextFile.txt  
 Line0  
 Line1  
 Line2  
 Line3  
 Line4    

This first example shows us just how to show the file content, however, the most interesting utilization is with a loop, which will allow us to do several tasks in a row for each line of the file as follows (let's say I have 3 computer names on MyTextFile.txt now):

 PS C:\> Get-Content MyTextFile.txt | ForEach { IISRESET $_ }  
 Attempting stop...  
 Internet services successfully stopped  
 Attempting start...  
 Internet services successfully restarted  
 Attempting stop...  
 Internet services successfully stopped  
 Attempting start...  
 Internet services successfully restarted  
 Attempting stop...  
 Internet services successfully stopped  
 Attempting start...  
 Internet services successfully restarted  

You can also limit the number of rows you want to be fetched from the file by using the parameter TotalCount if you want to get the x first records, or using the Select-Object cmdlet with the parameter -Last to have the x last records, as follows:

 PS C:\> Get-Content .\MyTextFile.txt -TotalCount 3  
 Computer0  
 Computer1  
 Computer2  
 PS C:\> Get-Content .\MyTextFile.txt | Select-Object -Last 3  
 Computer7  
 Computer8  
 Computer9  

Import-CSV cmdlet:

Let's say we have a CSV file, an Excel file (which can be easily saved as CSV), or even data exported from any application in comma-separated-values. This can be handled by PowerShell just as easily as the TXT file, plus the possibility to search the records you want to work with by quickly building queries to get information from the file content.

 PS C:\> Import-CSV .\MyCSVFile.csv | Format-Table -AutoSize  
 FullName        Extension CreationTime  LastAccessTime LastWriteTime  
 --------        --------- ------------  -------------- -------------  
 C:\install.res.1028.dll .dll   11/7/2006 9:03 5/6/2011 17:29 11/7/2006 9:03  
 C:\install.res.1031.dll .dll   11/7/2007 9:03 5/6/2011 17:29 11/7/2007 9:03  
 C:\install.res.1033.dll .dll   11/7/2008 9:03 5/6/2011 17:29 11/7/2008 9:03  
 C:\install.res.1036.dll .dll   11/7/2009 9:03 5/6/2011 17:29 11/7/2009 9:03  
 C:\install.res.1040.dll .dll   11/7/2010 9:03 5/6/2011 17:29 11/7/2010 9:03  

First example shows how to just get the file content and using Format-Table cmdlet to have the outcome formatted. Next, let's see how to filter only the ones with date greather than 1/1/2009 by using the Where-Object cmdlet an then again Format-Table for the outcome.

 PS C:\> Import-CSV .\MyCSVFile.csv | Where-Object {[datetime]::Parse($_.CreationTime) -gt '1/1/2009' } | Format-Table -AutoSize  
 FullName        Extension CreationTime  LastAccessTime LastWriteTime  
 --------        --------- ------------  -------------- -------------  
 C:\install.res.1036.dll .dll   11/7/2009 9:03 5/6/2011 17:29 11/7/2009 9:03  
 C:\install.res.1040.dll .dll   11/7/2010 9:03 5/6/2011 17:29 11/7/2010 9:03  

More info:

Get-Content cmdlet
Import-CSV cmdlet
Ler o texto inteiro ►
Related Posts Plugin for WordPress, Blogger...