There's any number of blogs and forum posts on the web that probably already have this, but I discovered an issue with the way the iPhone email handles interaction with PDFs and iBooks today.
If you download and email onto iphone with an attached PDF and save that PDF to iBooks the email body in all messages will disappear.
The simple solution is to reboot the phone or kill the mail process.
I expect Apple will patch this soon.
Thursday, November 11, 2010
Thursday, September 30, 2010
Reset Passwords for all User Accounts in an OU
I realise that there's plenty of scripts floating around the net that already do this, but for me this was simply an exercise.
Note: I haven't gotten around to testing it yet.
' PasswordReset.vbs
' Resets all passwords within an AD Container
' Version 1.0
' 27 September 2010
Option Explicit
Dim objRootDSE, objOU, objUser
Dim strTargetOU, strForceReset, strEnAcct, strDNSDomain, strNewPass
Dim intCounter, intUACval, intPWLval
' Change strTargetOU to location of user accounts
strTargetOU = "MyContainer"
' Change strNewPass to the new password
strNewPass = "Password123"
' Change strForceReset to "Yes" in order to force users to reset passwords
strForceReset = "No"
' Change strEnAcct to "Yes" in order to enable disabled accounts
strEnAcct = "No"
' Int Values
' See Microsoft KB305144 for UserAccountControl values
' Setting PwdLastSet value to 0 forces password reset
intUACval = 544
intPWLval = 0
intCounter = 0
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")
strTargetOU = "OU=" & strTargetOU & ", " & strDNSDomain
set objOU =GetObject("LDAP://" & strTargetOU )
For each objUser in objOU
If objUser.class="user" then
objUser.SetPassword strNewPass
objUser.SetInfo
If strForceReset="Yes"
objUser.Put "pwdLastSet", intPWLval
objUser.SetInfo
End if
If strEnAcct="Yes"
objUser.Put "userAccountControl", intUACval
objUser.SetInfo
End if
intCounter = intCounter +1
End if
Next
WScript.Echo "New Password: " & strNewPass & vbCr & "Accounts changed: " & intCounter _
& vbCr & "Password Change Forced: " & strForceReset & vbCr & "Disabled Accounts Enabled: " & strEnAcct
Note: I haven't gotten around to testing it yet.
' PasswordReset.vbs
' Resets all passwords within an AD Container
' Version 1.0
' 27 September 2010
Option Explicit
Dim objRootDSE, objOU, objUser
Dim strTargetOU, strForceReset, strEnAcct, strDNSDomain, strNewPass
Dim intCounter, intUACval, intPWLval
' Change strTargetOU to location of user accounts
strTargetOU = "MyContainer"
' Change strNewPass to the new password
strNewPass = "Password123"
' Change strForceReset to "Yes" in order to force users to reset passwords
strForceReset = "No"
' Change strEnAcct to "Yes" in order to enable disabled accounts
strEnAcct = "No"
' Int Values
' See Microsoft KB305144 for UserAccountControl values
' Setting PwdLastSet value to 0 forces password reset
intUACval = 544
intPWLval = 0
intCounter = 0
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")
strTargetOU = "OU=" & strTargetOU & ", " & strDNSDomain
set objOU =GetObject("LDAP://" & strTargetOU )
For each objUser in objOU
If objUser.class="user" then
objUser.SetPassword strNewPass
objUser.SetInfo
If strForceReset="Yes"
objUser.Put "pwdLastSet", intPWLval
objUser.SetInfo
End if
If strEnAcct="Yes"
objUser.Put "userAccountControl", intUACval
objUser.SetInfo
End if
intCounter = intCounter +1
End if
Next
WScript.Echo "New Password: " & strNewPass & vbCr & "Accounts changed: " & intCounter _
& vbCr & "Password Change Forced: " & strForceReset & vbCr & "Disabled Accounts Enabled: " & strEnAcct
Tuesday, September 7, 2010
SCCM: Excluding a directory structure from being inventoried.
A colleague asked me today how to exclude a directory structure on a single client machine from being inventoried by SCCM. The answer is to create a hidden sparse text file named skpswi.dat in the folder.
Thanks Tyriax for the question!
Thanks Tyriax for the question!
Wednesday, September 1, 2010
Office Autosave Locations
I always thought that the autosave for an Office file was created in the same location as the file. It turns out that this was because I almost always work with Office files on network drives.
When a new file is started a temporary file is created. This can be either in the windows temp directory, in "C:\ Documents and Settings\<username>\Application Data\Microsoft". If the file is stored on a network drive then it will be temporarily created there.
This temporary file will have a few different letters after the tilde (or squiggly line “ ~”) . These are good ones to look for to find some lost info. There are others, but these are the ones most likely to contain data that can be recovered.
When a new file is started a temporary file is created. This can be either in the windows temp directory, in "C:\ Documents and Settings\<username>\Application Data\Microsoft". If the file is stored on a network drive then it will be temporarily created there.
This temporary file will have a few different letters after the tilde (or squiggly line “ ~”) . These are good ones to look for to find some lost info. There are others, but these are the ones most likely to contain data that can be recovered.
Thursday, August 12, 2010
Subroutine to quit a VBS login script on Windows 2003/2008 servers
Sub DetectOS()
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem In colOperatingSystems
If InStr( objOperatingSystem.Caption,"2003") <> 0 _
or InStr( objOperatingSystem.Caption,"2008") <> 0 Then
WriteLog "Detected Operating System: " & objOperatingSystem.Caption
WriteLog "Script will not continue...."
WScript.Quit(0)
Else
WriteLog "Detected Operating System: " & objOperatingSystem.Caption
WriteLog "Script will continue....."
End if
NextEnd Sub
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem In colOperatingSystems
If InStr( objOperatingSystem.Caption,"2003") <> 0 _
or InStr( objOperatingSystem.Caption,"2008") <> 0 Then
WriteLog "Detected Operating System: " & objOperatingSystem.Caption
WriteLog "Script will not continue...."
WScript.Quit(0)
Else
WriteLog "Detected Operating System: " & objOperatingSystem.Caption
WriteLog "Script will continue....."
End if
NextEnd Sub
Sunday, July 4, 2010
Exchange and Server Naming
I worked for an organisation once that had a naming convention for its servers that constituted:
Unfortunately, this resulted in a server name of AUTHOMS01. You might look at this and think "Okay, no problem" and you would be right, unless you installed Exchange on the server.
We couldn't for the life of us figure out why Exchange would not complete SMTP transactions even though the answer was staring us in the face. It turned out that whenever the server communicated with a destination server, the transaction stopped whenever the AUTHOMS01 server presented itself.... because SMTP saw the first four letters of the server name as a valid SMTP command: AUTH.
So take care not to name your mail servers with a name that starts with a valid SMTP command!
Cheers,
Sean
- a country code (2 alpha)
- a location code (3 alpha)
- a server type code (2 alpha)
- an instance number (2 numeric)
Unfortunately, this resulted in a server name of AUTHOMS01. You might look at this and think "Okay, no problem" and you would be right, unless you installed Exchange on the server.
We couldn't for the life of us figure out why Exchange would not complete SMTP transactions even though the answer was staring us in the face. It turned out that whenever the server communicated with a destination server, the transaction stopped whenever the AUTHOMS01 server presented itself.... because SMTP saw the first four letters of the server name as a valid SMTP command: AUTH.
So take care not to name your mail servers with a name that starts with a valid SMTP command!
Cheers,
Sean
Locating Encrypted Files
When undertaking a file migration project between Active Directory domains and forests, it's necessary to locate any EFS encrypted files in order to decrypt them prior to the decommissioning of the old domain and the loss of the keys.
I located this handy script that will identify encrypted files in a volume (just change the drive letter as necessary):
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService. _
ExecQuery("Select * from Win32_Directory where Drive='C:'" _
& " AND Encrypted=True")
For Each objFolder in colFolders
Wscript.Echo "Name: " & objFolder.Name
Wscript.Echo "Path: " & objFolder.Path
Next
I located this handy script that will identify encrypted files in a volume (just change the drive letter as necessary):
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService. _
ExecQuery("Select * from Win32_Directory where Drive='C:'" _
& " AND Encrypted=True")
For Each objFolder in colFolders
Wscript.Echo "Name: " & objFolder.Name
Wscript.Echo "Path: " & objFolder.Path
Next
Subscribe to:
Posts (Atom)