Tag Archives: 4work

Pimp your Powershell Prompt

I use powershell a lot at work – I’m not a guru by any means and I often find it hard to remember the commands I have run in a session, either for future use or for documenting in my time sheet (which also acts as a point of reference for future helpdesk tickets).

When I started going through the Powershell in a month of lunches book (which I highly recommend or the Powershell v3 book) I decided to use the start-transcript commandlet to record all my powershell activities.  This worked very well until I would scroll through several screens worth and then forget what file I had saved my transcript too.  There was also the possibility of forgetting to transcript everything.

By using the powershell profile file I was able to enter the commands to automatically set the transcript to the current date. I was then able to modify the title of the powershell prompt to display the filename so I could always see where the file was saved with the added bonus of a variable being used if I ever needed to open the transcript

My next step was to include the time in the powershell prompt – this enables me to go back through the transcript and see how long it took to run the commands for my timesheet entries.  Remembering back to the good old dos days, I remembered the prompt command. A quick bit of experimenting with the Date command I had the current time displayed at the beginning on the Powershell prompt. Note this is displayed after the previous command is run, so technically it’s not the exact current time, but the time that the prompt was displayed on the screen.

The final profile script can be copy/pasted into notepad by typing in

notepad $profile

is as follows:-

cd \andy\powershellinamonthoflunches

$log="c:\temp\powershelllogs-" + $env.username + (get-date -uformat "%y%m%d-%H%M") + ".txt"
start-transcript $log
$host.ui.rawui.WindowTitle = $log

function prompt
{
write-host ((Date -uformat %T).ToString() + "PS " +$(get-location) + ">") -nonewline
return " "
}

This ends up with a powershell prompt that looks like the following. Hope this brief posting inspires you to change your powershell prompt to be even more useful for you.

 

Powershell prompt with the filename in the title and current time in the prompt

 

Fixed – Office365 journalling does not work for one user

I’ve been working on a case with Microsoft’s Office365 support for several weeks trying to find out why email sent *to* a particular user was not being journalled. All the other mail seemed to be journalled to the external recipient, email from the user was working, just not email to that user.

The experience was quite frustrating as Microsoft’s support were terrible at calling back and could not grasp the concept of email tracking. Their solution after making a change was to wait a day to see if it was fixed although it was quite apparent that the Microsoft servers were not even trying to send the email (by looking at the Trace Logs you can see what email was being sent and received).

After checking the connectors were setup, mail properly scoped, the user had no rules on their mailbox, Microsoft’s solution was to delete the mailbox and reset it up again.  Not so easy when the mailbox/user is federated with Active Directory and the user happens to be the owner of the company. That was not a conversation I was going to have with them!

The only thing that was different with this user was that in troubleshooting this issue we had set the user up to receive the journalling non delivery reports. I figured that if the emails were not being delivered, maybe sending him the errors would help. However no reports were being received either.  However, according to KB 2829319 this behaviour can be seen. Although I had removed the journal receipient in the web gui, the emails were still not being journalled until I added another external email address to the configuration using the powershell command set-transportconfig -JournalingReportNdrTo [email protected]somethingorother.com

At this point, all the email started to be journalled.

Note that we only added the recipient into the mix when I was trying to work on the initial problem so it looks like this wasn’t the only fix.

The other thing we did was change the outboundconnector to be onpremises. Changing the setting in the GUI we then ran Set-OutboundConnector archivemymailconnector -routeAllmessagesviaonpremises $true.

 

These two combinations seemed to fix the issue.

One thing I also learnt was that it is really useful to send multiple emails between changes and keep the subject line starting the same. Use the date/time at the end of the email. That way you can sort the email logs by Subject and just pick out the ones you were working on. By having the subject start with zzz followed by Round X (ie zzz Round 1 – change connector – 1345pm and zzz Round 1 – change connector 1346pm ) then the results are likely to appear at the end of your mail logs if you sort by subject.  Sorting by Date was not always a good idea as mail flow could occur between mail coming into the server and mail leaving the server.

 

Fixed: Office 2010 installation with MAK key gives Error: Can’t decode PIDKey – Invalid digits! ErrorCode: 0(0x0)

After doing an administrative installation of Office Professional Plus 2010 for a client, I was trying to test the installation of office on a desktop machine but kept getting “Error: Can’t decode PIDKey – Invalid digits! ErrorCode: 0(0x0).” as the error message. I confirmed that the key was correct by doing a manual installation of the software and using the same product key that was successful. I was unable to find any useful pages on the internet with this error message so ended up logging a call with Microsoft Product Support to troubleshoot the installation.

Our troubleshooting steps were to remove the updates folder completely and try an installation – this worked so we knew the problem was in the updates directory. Recopying back the files from the extracted service pack 1 dvd worked successfully so the problem was either service pack 2 or the setup.msp file. I copied back the sp2 files and again the software installed successfully (note that having a virtual test pc makes these tests very easy. No uninstalling of office required!)  Again the installation was successful. I then copied the setup.msp file back into the updates directory and the installation failed again. As the configurations that are made in the setup.msp can either be set in the config.xml or group policy it was ok to proceed without using the setup.msp.

Full details of the log files and more information can also be found at the Microsoft forums where I posted the initial request for help.

Trying to install System Center 2012

I have been battling this install for 2 days so far and not getting anywhere. There are a ton of sql prerequisites and the install error messages are very vague, like this message below:-IF
Surely it can’t be that hard to display the version of SQL server that is detected.

I’m currently following Harold Wong’s System Center install guide along with Matthew Peter’s guide and downloaded the Cumulative update 10 for SQL.
Attempting to install this patch on the server gives the error message below.
Screenshot - 1_3_2013 , 11_56_37 AM

The stupid thing about this is that neither 10.51.2500.0 or 10.1.2531.0 are valid sql version numbers. Select @@version returns the accurate 10.50.2500.0 which is sql 2008 r2 sp1 but it ignores the previous cumalative update that I’ve already installed.

So far my hopes for System Center have been severely dashed and buried in the ground. It’s a good job we don’t have windows in this office or I’d be tempted to set fire to the server and chuck them out of the window.

It’s been a long start to the new year.

 

Retrieve user friendly list of users who have full access to a particular mailbox in Office365

We had a request to provide a list of users who have Full access to a mailbox in Office 365. The get-mailboxpermission is pretty straightforward, but the results show the Windows username as opposed to the descriptive name for the user. The following script should provide the information needed. Note that the first 3 lines connect to Microsoft Online (you will be prompted for username and password) – the last two are the magic ones. Replace “User name” with the users first and last name ie “Andy Helsby” in my case

$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session

$userlist = Get-Mailbox "user name" | Get-MailboxPermission | Where-Object { ($_.AccessRights -eq "Fullaccess") -and ($_.IsInherited -eq $false) -and -not ($_.User -like "*nt authorityself*") }
$userlist | foreach {get-mailbox $_.user}

If I can work it out, I’ll update the script later to provide a report for all mailboxes – in the meantime this works for 1 mailbox at a time.

Funnily enough, this report didn’t actually help the reason we were asked for the report – that was because the user had issues connecting to someone else’s mailbox. It turns out that the Microsoft Online password had been changed and outlook was using the cached credentials. By removing the stored passwords in the control panel, Outlook prompted for the password and everything started working.

Fixed:Corrupt contacts in outlook but they appear ok on phone.

Had a weird problem this morning with a user that had issues with incorrect data appearing in their outlook contacts. When you looked at the contacts in Outlook 2007, the Full Name was typically somebody else, yet the email address and name displayed in Outlook would be correct. Occasionally things like company name would appear incorrect. Looking at the phone, the data looked correct however the phone typically does not seem to use all of the fields that outlook2007 displays.
When I looked at the contacts within OWA the data looked ok. In OWA I changed the middle name on one of the corrupted contacts (although it looked correct in OWA) and then switched back to Outlook – the contact was now showing the middle name as expected, but the rest of the data was also coming across correctly. I took out the middle name within OWA and sure enough Outlook removed the middle name too and the contact was now correct.
The next stage was just to open the contact in OWA and hit save and close. This fixed the contact in Outlook too. I have no idea why this issue occured, and thankfully there are not *too* many contacts to open (only 170 in total) but just opening and then doing a Save and Close fixes the issue.
It will be interesting to see if this issue reoccurs.

Fixed:MDOP download on Technet

One of the advantages of a Technet subscription is access to the (MDOP Microsoft Desktop Optimization Pack) software including the Diagnostics And Repair Toolkit (DART). Unfortunately it took me a while to find it under the downloads today as MDOP does not appear under the list of downloads. However searching for Desktop Optimization Pack finds it. (You need to log into the Subscriber Downloads for this link to work). You’d be surprised how inaccurate the Google results for MDOP download on Technet results are.

Fixed: Connectwise and roaming profile permissions issues

A while back we started using Connectwise for our Helpdesk system and we use roaming profiles for our techs. Unfortunately Connectwise has to write to the appdata directory and the permissions were not set for Connectwise to write the files correctly and it also assumed that your appdata directory was going to be on c:\ rather than \\server…..
It took some digging and trial and error before we were able to get this working – the solution is to do the following from a command prompt –
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol -machine -addgroup LocalIntranet_Zone -url “file://server/user$/%username%/appdata/*” FullTrust -name Andy-PsaIntranet

I think the name parameter can be anything but we set it to firstname-PsaIntranet. Also note the appdata has the path to appdata but with forward slashes instead of back slashes.

Connectwise is a great tool but whatever you don’t do, don’t use the hosted version – the performance and the lack of options and features that are crippled in the hosted product makes a very frustrating end user experience. Last night we switched over to an inhouse version and I found that I had to create a new data directory in the connectwise directory. Note this was after doing the incredibly annoying “clear cache” function in Connectwise. Create %appdata%AppData\connectwise\psa\cache\companyurl.com\companyname\connectwiseuserid\data

Onenote Calendar and clipping tool

I use Onenote extensively at work and love the ability to take freeform notes in meetings and organize stuff into the separate folders. One of the things I use it with are the various projects that I’m running in the office and these notebooks are shared amongst the project participants so we all are working off of one realtime document. This has the advantage that most of the data is in one place and we have a historical record but it is hard to tell what documents have been changed recently and with the proliferation of notebooks, it’s hard to remember which notebook contains a particular document that I worked on last Tuesday for example.
Previously I was using a toolbar icon that shows me the notebooks changed in the last 7 and last 14 days of use. This was really useful, but recently I stumbled across Omer Atay’s Onetastic addin. As the name suggests, this is really good addin (should have been in the shipped product) that enables you to tidy up the print to onenote output AND also has a built in calendar display option that shows you the documents that have been changed on the day, week or month that you select. The Calendar option is also available as a standalone application, but you might as well have the web clipping (which also contains a cropping tool too) add in too.
Highly recommended – especially if you share your OneNotes with other people or you are not that organized in filing your documents 😉
Note this does require OneNote2010 – but you are on that already right?

Fixed – Archive options missing in Outlook 2007 and send/receive issues

We had a weird issue this morning where the Archive options were missing in Outlook 2007. This is apparently a known issue with the kb2412171 December 14, 2010 outlook update which allegedly improves stability. It is hard to see how removing functionality, breaking send and receive and reducing performance when you switch folders comes under the category of improving stability and increasing performance.
Thankfully the solution is simple, just remove 2412171 from add/remove programs and everything should go back to normal.
Further details on the patch are also available which includes the known issues when installing 2412171.
Needless to say, we have unapproved this patch on our WSUS servers.