Microsoft’s voice assistant Cortana will now be available on iPhone, Android!

Having a Windows Phone has been great!  I do miss some of my total waste-of-time games found on my old Android phone, but with the stable OS of Windows running on my phone and Cortana as my personal assistant, I’m very pleased and with this announcement, I hope All smartphone owners will try out Cortana!

Read More: http://nydn.us/1HuUvvK

Server 2012 -From Core to GUI

OK, so I’ll admit.. I found this one out by accident. While working on a Windows 2012 Server, the GUI features were removed and brought it back to a Core installation. As much as I like using command line (and PS), it threw me off!

So, to Bring back  the nice-n-pretty Graphical User Interface for Server 2012, the Deployment Image Servicing and Management tool (DISM) was needed! -Keep in mind, all I had was the Command Prompt (NO PowerShell).

From the Command line:

  • Dism /online /enable-feature /featurename:Server-Gui-Mgmt /all
  • Dism /online /enable-feature /featurename:Server-Gui-Shell /all
  • Dism /online /enable-feature /featurename:ServerCore-FullServer /all
  • Dism /online /enable-feature /featurename:Server-Gui-Shell /featurename:ServerCore-FullServer /all
  • Dism /online /enable-feature /featurename:Server-Gui-Mgmt /featurename:Server-Gui-Shell /featurename:ServerCore-FullServer /all

Reboot and “Viola! It’s back!”

Customized PowerShell Startup

If you’re like me and use Windows PowerShell frequently, it might be worth looking at customizing your default PowerShell profile.  There are times where I may need to look back at previous scripts I’ve run -even long after the Shell window has closed. That is why I use the Transcript function. This feature logs all of the activity in every PowerShell session. Since I have it using the -append switch, I’ve modified the script to help separate sessions within the log. Within your C:\Users\”username”\Documents folder, create another folder called “WindowsPowerShell”. Within there, create a .ps1 file named, “Microsoft.PowerShell_profile.ps1”.

My preferences are for a Black window with classic green characters.  I also like to start off in my C:\Scripts folder. Lastly, I like my PowerShell logging to go into C:\PSlogging.

With that information, the .ps1 script will contain:

#Set Color Scheme
$Host.UI.RawUI.BackgroundColor = “Black”
$Host.UI.RawUI.ForegroundColor = “Green”
#Set Default Location
Set-Location C:\Scripts
#Set Logging Variables
$LogTime = Get-Date -Format “yyyy_MM_dd_hhmm”
CLS
Write-Host “Microsoft Windows 8.1 PowerShell Session Version 3.  Please continue…” -ForegroundColor Blue
Start-Transcript “C:\PSlogging\transcript.log”  -Append
Write-Host “================= Log Time:   $LogTime =============================” -ForegroundColor Yellow

-Enjoy!

Quickly Create Test Accounts

When looking to verify a process like mailbox migrations, sometimes a significant number of test accounts are required. You could go about it in the old fashioned (manual) way of creating each account one by one, or…

You can use PowerShell!

There are a few things required before beginning.

1. Create a .csv file with a few basic headers and some values.

This list is what will be used to create all the accounts needed. For example:

1-CSV

2. Open Notepad.exe and add this information in. 

$ErrorActionPreference = “SilentlyContinue”

function Select-FileDialog
{
 param([string]$Title,[string]$Directory,[string]$Filter=”CSV Files (*.csv)|*.csv”)
 [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) | Out-Null
 $objForm = New-Object System.Windows.Forms.OpenFileDialog
 $objForm.InitialDirectory = $Directory
 $objForm.Filter = $Filter
 $objForm.Title = $Title
 $objForm.ShowHelp = $true
 
 $Show = $objForm.ShowDialog()
 
 If ($Show -eq “OK”)
 {
  Return $objForm.FileName
 }
 Else
 {
  Exit
 }
}

$FileName = Select-FileDialog -Title “Import an CSV file” -Directory “c:\”

$ExchangeUsersOU = “OU=TestUsers”

$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain()  
$DomainDN = (([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).Domains | ? {$_.Name -eq $domain}).GetDirectoryEntry().distinguishedName
$final = “LDAP://$DomainDN”
$DomainPath = [ADSI]”$final”
$cOU = $DomainPath.Create(“OrganizationalUnit”,$ExchangeUsersOU)
$cOU.SetInfo()

$UserInformation = Import-Csv $FileName

$OUPath = “LDAP://$ExchangeUsersOU,$DomainDN”
$UserPath = [ADSI]”$OUPath”
Write-Host “—————————————————————“
Write-Host “Creating LAB Users”
Write-Host “Version 1.1”
Write-Host “—————————————————————“

Foreach ($User in $UserInformation){
 
 $CN = $User.samAccountName
 $SN = $User.Surname
 $Given = $User.givenName
 $samAccountName = $User.samAccountName
 $Display = $User.DisplayName
 
 $LABUser = $UserPath.Create(“User”,”CN=$CN”)
 Write-Host “Creating User: $User.samAccountName”
 $LABUser.Put(“samAccountName”,$samAccountName)
 $LABUser.Put(“sn”,$SN)
 $LABUser.Put(“givenName”,$Given)
 $LABUser.Put(“displayName”,$Display)
 $LABUser.Put(“mail”,”$samAccountName@$domain”)
 $LABUser.Put(“description”, “Lab User – created via Script”)
 $LABUser.Put(“userPrincipalName”,”$samAccountName@$domain”)
 $LABUser.SetInfo()
 
 $Pwrd = $User.Password
 
 $LABUser.psbase.invoke(“setPassword”,$Pwrd)
 $LABUser.psbase.invokeSet(“AccountDisabled”,$False)
 $LABUser.psbase.CommitChanges()

}
Write-Host “Script Completed”

3.  When finished, save as “NEWLABUSERS.ps1”

This script will create new accounts in Active Directory based on the .CSV file in step 1.  The accounts will be created in an OU called “OU=TestUsers”.

4.   To create corresponding Exchange mailboxes for these test users, Run the following cmdlet from the Exchange Management Shell;

Get-User -OrganizationalUnit “OU=TestUsers,DC=domain,DC=com” -Filter ‘RecipientType -eq “user”‘ | ForEach-Object { $email = $_.FirstName +”.”+ $_.LastName +”@domain.com“; Enable-Mailbox -Identity $_.SamAccountName -DisplayName $_.DisplayName -Alias $_.SamAccountName -PrimarySmtpAddress $email -Database “ExchMBXServer\SG1\database“}

*NOTE: on each variable that has a strikethrough above, change the variable to ones within your organization.  “OU=TestUsers,DC=contoso,DC=com” and “@contoso.com” and “ExchMBX01\First Storage Group\defaultdatabase”

SharePoint on Training Wheels

OK, so even though I’m quite proficient with Office 365, especially with the Exchange Online piece and Lync, I’m certainly taking the SharePoint part s.l.o.w…

As you can imagine, since the backend change of O365 from Wave 14 to Wave 15 there have been mountains of change. As for the webpage management of it, well that has increased in complexity 10-fold.  Hopefully as I learn new tips and tricks on managing this I’ll share in this forum.

Side note:  a GREAT resource for this stuff can also be found in the Community Forums at http://community.office365.com.​

 

Unable to delete SharePoint Online Team Site

Problem:  unable to delete SharePoint Online site/site collection due to permissions even though account being used is in the owner permissions group.

Solution:  ​OK… so with a little help on the backend from MS support I was able to fix the issue with permissions on an internal team site and successfully delete the unwanted site.

By going to: https://TENANTNAME.sharepoint.com/SITENAME/_layouts/15/deleteweb.aspx

(Replace both TenantName and SiteName with specific values)

You can Delete the Website.  The problem in this case was the migration from Wave 14 to Wave 15 when a team site was created before the migration on the backend.  Also noted was the change in the tenant logon ID changing to different values.  This cause an odd problem where owner permissions were hosed.

*NOTE:  do not delete the Search teamsite!