Tuesday, December 13, 2016

How to create a clustered task to repeat

It is not possible to create a task with single trigger with repeat. In stead, you can created multiple triggers. It is not recommended to add it manually using the gui, when the cluster fail over the manually changed/added triggers will be vanished. Always use powershell to insure multiple triggers stay with the task.

In this example I created a resource specific task (R: is clustered disk 2), this task runs on a node where the R: is active.

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-executionpolicy bypass -file test.ps1" -WorkingDirectory "R:\scripts"
$triggers = @()
$triggers += New-ScheduledTaskTrigger -Daily -At 04:00
$triggers += New-ScheduledTaskTrigger -Daily -At 08:00
$triggers += New-ScheduledTaskTrigger -Daily -At 15:00
$triggers += New-ScheduledTaskTrigger -Daily -At 22:00
Register-ClusteredScheduledTask –Cluster fileClusterServer –TaskName testTask –TaskType ResourceSpecific –Resource "cluster disk 2" –Action $action –Trigger $triggers



The script below is a bit messy but it creates a clustered task that runs on every hour


$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-executionpolicy bypass -file test.ps1" -WorkingDirectory "R:\scripts"
$triggers = @()
for ($i=0; $i -le 23; $i++)
{

[string] $j = $i
if ($i -le 9)
{
 
$j = "0"+ $j

}
$taksTriggerTime = $j

$taskTime = $j + ":00"

$triggers += New-ScheduledTaskTrigger -Daily -At $taskTime

}
  
Register-ClusteredScheduledTask –Cluster fileClusterServer –TaskName testTask –TaskType ResourceSpecific –Resource "cluster disk 2" –Action $action –Trigger $triggers


Note: the resource specific task will run under the system (node), if fail over happens the active node's system account will run the task, folder security will change automagically so you don't have to add all nodes to folder's security tab.
It is not possible to make the task run under some sort of a service account at this point. It runs under only system account.

Friday, October 28, 2016

How to change SCCM reserve disk space for a DP

1) Run SQL query:

select SCR.ID, SCR.Name,SC.NalPath, SCR.Value3 from sc_sysresuse_property SCR join sc_sysresuse SC on SCR.SysResUseID = SC.ID where SCR.name = 'MinFreeSpace' and SC.NALPath like '%%' and SC.RoleTypeID = 3

get SCR_ID

2) Use the returned ID in step 1). Run the below query to update the 'MinFreeSpace' value.
update sc_sysresuse_property set value3 = 'set desired value in MB' where name = 'MinFreeSpace' and ID = ''
Example:
update sc_sysresuse_property set value3 =10240  where name = 'MinFreeSpace' and ID = xxxxxxxxxxxxx

3) Change registry value HKLM\software\Microsoft\SMS\DPreserveddiskspace to match the  number you used on step 2, eg: 10240. 

You don't have to reboot the DP.


Restart the SMS_SITE_Component_Manager service on SCCM site server.

Monday, October 17, 2016

SCOM 2012 r2 console crash after windows patch

After I installed Oct 2016 windows patches
I got this error whenever I tried to open "windows Computers" under "Monitoring"

Application log:
Faulting application name: Microsoft.EnterpriseManagement.Monitoring.Console.exe, version: 7.1.10226.1177, time stamp: 0x5697e092
Faulting module name: ntdll.dll, version: 6.1.7601.23543, time stamp: 0x57d2fde1
Exception code: 0xc000041d
Fault offset: 0x000000000004ef57
Faulting process id: 0x18a0
Faulting application start time: 0x01d228f4261a1d54
Faulting application path: C:\Program Files\Microsoft System Center 2012 R2\Operations Manager\Console\Microsoft.EnterpriseManagement.Monitoring.Console.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 7a5e2e0a-94e7-11e6-ab30-0050569b0035


SCOM console logs:

Problem signature:
  Problem Event Name: APPCRASH
  Application Name: Microsoft.EnterpriseManagement.Monitoring.Console.exe
  Application Version: 7.1.10226.1177
  Application Timestamp: 5697e092
  Fault Module Name: ntdll.dll
  Fault Module Version: 6.1.7601.23543
  Fault Module Timestamp: 57d2fde1
  Exception Code: c0000005
  Exception Offset: 000000000004eef1
  OS Version: 6.1.7601.2.1.0.272.7
  Locale ID: 1033
  Additional Information 1: 383a
  Additional Information 2: 383a5f09f3fd70a29b8be053663a1d2a
  Additional Information 3: 0ebe
  Additional Information 4: 0ebe29effad583805ef4413487a5a75f

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt


It seems "October 2016 security monthly quality rollup" is causing the issue
KB3192392 for Windows 8.1 and Server 2012 R2
KB3185332 for Windows server 2012
KB3185330 for Windows server 2008 R2

Remove the KB and restart the SCOM server and it will be fixed.

Saturday, October 15, 2016

Clustered task in Windows server 2012 R2 with 0x1 error

I tried to create a clustered task and got 0x1 error, according to M$ it means

0x1: An incorrect function was called or an unknown function was called. (ref: https://support.microsoft.com/en-us/kb/308558)
extra: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383604(v=vs.85).aspx

This is the original script that generated 0x1 error

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "runme.ps1" -WorkingDirectory "E:\Shares\scripts"

E: is a clustered disk and I got 0x1 error when I execute the task manually.

Later I found that it has to do with execution policy, so I have changed it to

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-executionpolicy bypass -file runme.ps1" -WorkingDirectory "E:\Shares\scripts"

and it ran without error.


Here is the complete script to create the task
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-executionpolicy bypass -file runme.ps1" -WorkingDirectory "E:\Shares\scripts"
$trigger = New-ScheduledTaskTrigger -Daily -At 3pm
Register-ClusteredScheduledTask –Cluster filesharecluster –TaskName MyResourceSpecificTask –TaskType ResourceSpecific –Resource "cluster disk 2" –Action $action –Trigger $trigger


and this is what the runme.ps1 looks like, as you can see you can run dos command and powershell

dir c:\ | export-csv "e:\shares\scripts\result.csv"

somehow trying to to run bat file also generated 0x1 error, some suggested that the account that runs the task needs to be in "logon as a batch" job in local security policy but I have not tried it yet.

Friday, July 15, 2016

New-RDSessionDeployment : Validation failed for the "RD Connection Broker" parameter

I had this error when I tried to deploy a RDS 2012 R2



PS C:\Users\admin> New-RDSessionDeployment -ConnectionBroker xxx.test.local -SessionHost xxx.test.local
New-RDSessionDeployment : Validation failed for the "RD Connection Broker" parameter.
xxx.test.local      Unable to connect to the server by using Windows PowerShell remoting. Verify that you can
connect to the server.
At line:1 char:1
+ New-RDSessionDeployment -ConnectionBroker xxx.test.local -SessionHost xxx.te ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-RDSessionDeployment


I googled and googled and found no cure...until I tried this...disable IPv6



 
and tried it again, and it worked. Close the current PowerShell and open a new one after you disabled the IPv6.
 
 
 
 








Tuesday, February 11, 2014

Search query grayed out on in-place hold settings

If you are a domain admin and exchange admin and tried to setup in-place hold setting, you might find the "search query" option is grayed out! You might think "oh no maybe it is the search engine!"
No it is not, you must be a member of "discovery management" group, add your account to be a member of the group, log out form the ECP and log back-in, try to create the in-place hold.

Ok now you done playing with in-place hold and try to delete the in-place hold, and it errors out, and says

Can't remove mailbox search  because there is still at least one mailbox on In-Place Hold.

remove-mailboxsearch will give you the same error, well it has to be disabled first!

Here is a fix:

Set-MailboxSearch   -SourceMailboxes  -InPlaceHoldEnabled $false

If the in-place hold name is "test1" and the last mailbox that are in the in-place hold is "testuser"

Set-MailboxSearch "test1" -SourceMailboxes "testuser" -InPlaceHoldEnabled $false

now remove the in-place hold.


Exchange 2013 disk partition alignment

Visit this page for Exchange 2013 Storage Configuration Options
http://technet.microsoft.com/en-us/library/ee832792(v=exchg.150).aspx


For exchange 2010:
http://exchcluster.blogspot.com/2010/12/disk-partition-alignment-best-practices.html

Monday, February 10, 2014

Trouble shooting exchange 2013 installation problems

1. Errors when you try to install exchange 2013

First,

To fix a problem below, enable IPv6 on the server and DCs, you can disable ipv6 after a successful install.

          if( -not $successfullySetConfigDC)
          {
            Write-ExchangeSetupLog -Error "Unable to set shared config DC.";
          }
        " was run: "Unable to set shared config DC.".

Next..

If you try to install exchange 2013 for the first time and failed, and try again you might see error message below

"Couldn’t attach the data folder 'C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\HostController\Data'. Path doesn’t contain old nodes belonging to the system 'Fsis'."


If you try to install using setup.exe, the setup will tell you to use the server recovery mode, it will still fail.

To fix the problem (warning: If you already have Exchange 2010 or older version, do not follow this instruction!, if you follow this instruction it will remove the current exchange server env. as well)

Open ADSI Edit, select and open "Configuration"

Go down to Services, and delete Microsoft Exchange and Microsoft Exchange Autodiscover

Now open "Default naming context"
Delete  Microsoft Exchange Security Groups and Microsoft Exchange Security Objects

On the server that failed to install exchange 2013

Additional steps:
Delete the C:\Program Files\Microsoft\Exchange Server folder and all the contents

Open IIS
and delete
Exchange Back End and Front End websites (it might be default web site, leave it)

Open AD users and Computers

GO under the users and remove
DiscoverySearch Mailbox*
Exchange Online-ApplicationAccount
FederatedEmail.*
Migration.*
*SystemMailbox*
*HealthMailbox*

Open regedit and delete

HKLM\Software\Microsoft\ExchangeServer
HKLM\CurrentControlSet\Services\MSExchange*


And...

If you successfully install the exchange 2013, you might see...



Exception : Microsoft.Exchange.Management.Deployment.ScriptExecutionException: The following error was generated when "$error.Clear();
.
.
blah blah
.
.
                    {
                        $deleteErrorMsg = "Failure cleaning up SearchFoundation Data folder. - " + $dataFolderPath + " - " + $_.Exception.Message;
                        Write-ExchangeSetupLog -Error $deleteErrorMsg;
                    }
                }
            }
        " was run: "Error occurred while uninstalling Search Foundation for Exchange.System.Exception: Cannot determine the product name registry subkey, neither the 'RegistryProductName' application setting nor the 'CERES_REGISTRY_PRODUCT_NAME' environment variable was set
   at Microsoft.Ceres.Common.Utils.Registry.RegistryUtils.get_ProductKeyName()
   at Microsoft.Ceres.Exchange.PostSetup.DeploymentManager.DeleteDataDirectory()
   at Microsoft.Ceres.Exchange.PostSetup.DeploymentManager.Uninstall(String installDirectory, String logFile)
   at CallSite.Target(Closure , CallSite , Type , Object , Object )".


To fix the error (you might see it again when you apply patches) run this from the powershell

$env:CERES_REGISTRY_PRODUCT_NAME = "Search Foundation for Exchange"



And....

When you try to login to ECP or OWA as domain\administrator you might see

WARNING: the object mydomain/Users/Administrator has been corrupted, and it's in an inconsistent state.


The following validation errors happened:
WARNING: Database is mandatory on UserMailbox.
WARNING: Database is mandatory on UserMailbox.

to fix the problem, re-create the mailbox using disable-mailbox and enable-mailbox command.


Monday, July 23, 2012

How to add a domain user to a sudo group in linux

First you must add your linux in to a windows AD, once it is done, login as root or user that is in wheel group.


Execute this command visudo, that will open etc/sudoers file. if you do vi /etc/sudoers vi will give you an permission error. So besure to use visudo without space.


Find a line that looks like this

%wheel     ALL=(ALL)     ALL

put this just below that like (Yes with \\, in linux \ is an escape charator, so we have to put two \ instead of  one \) this...

domain\\username   ALL=(ALL)

example:   If you want to add a user test1 who is in world.com

world\\test1 ALL=(ALL)

and this is an option you can put just behind the line, so it will not ask for a password if you do sudo. a bit of security issue but if you built a test linux machine gotta do lots of sudo, ye it can be your best friend.

NOPASSWD:  ALL

example: world\\test1 ALL=(ALL)  NOPASSWD: ALL


That is all.



Installing Exchange 2013 preview - quick and dirty

What you will need, a domain controller, a windows server 2008 or R2 or 2012 and some pre-req items

I will use an Windows 2008 R2 x64 Enterprise version for this demo.

Download a Exchange server 2013 preview from here : http://www.microsoft.com/exchange/en-us/exchange-preview.aspx

All Exchange 2010 servers in the organization need to be at Exchange 2010 SP3 orlater, and SP3 is not available at this time (2012, July), so if you try to install it on the current Exchange 2010, you won't be able to install it at all.


Pre-req items list

1. Add RSAT-ADDS

On powershell run

Import-Module ServerManager

Add-WindowsFeature RSAT-ADDS

2. Install IIS 7

On powershell run

Import-Module ServerManager\

Add-WindowsFeature Desktop-Experience, NET-Framework, NET-HTTP-Activation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Web-Server, WAS-Process-Model, Web-Asp-Net, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI


3. Install hotfix 2619234

http://support.microsoft.com/kb/2619234


4. Microsoft Unified Communications Managed API 4.0, Core Runtime 64-bit.

http://go.microsoft.com/fwlink/?LinkId=238142

5. KB974405

http://support.microsoft.com/kb/974405


6. Microsoft Office 2010 Filter Packs - Version 2.0

http://go.microsoft.com/fwlink/?LinkID=191548

7. Microsoft Office 2010 Filter Packs - Service Pack 1

http://www.microsoft.com/download/en/details.aspx?id=26604



8. Install Windows Media Encoder

http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.LonghornWmvcoreNotInstalled.aspx


9. .Net framework 4.0
http://www.microsoft.com/en-us/download/details.aspx?id=17718

10. .Net framework 4.5

http://msdn.microsoft.com/en-us/library/5a4x27ek(v=VS.110).aspx

11. Windows Management Framework 3.0

http://www.microsoft.com/en-us/download/details.aspx?id=29939

12. Exchange Server 2013 Preview isn't compatible with Microsoft Visual C++ 11 Beta Redistributable (x64) 11.0.050531. Please uninstall it before you install Exchange 2013 Preview.
Uninstall Microsoft Visual C++ 11 Beta using "programs and feafures"



Installation steps

1. Install all pre-req items, and reboot.

2. Fully patch the new windows 2008 r2 server.

3. Run the exchange-x64.exe, it will ask a place to extract the files.

4. Choose a folder to extract.


5. Go to the folder and execute the setup.exe file

6. On Check for updates, I chose not to check, Next






7. Copying files, Next




8. Introduction screen, Next




9. Accept the license term, Next




10. Error reporting, choose no, and Next




11. On checking required software, Next




12. Installation space and location, Next





13. On Malware protection settings, select Yes to disable it and Next





14. On configure client access server, select , "this client server role will be internet-facing" and fill out the domain information




15. On customer experience improvement program window, click Next.






16. Readiness checks, wait until it finishes its task.





17, Once all check got passed, Next


18, setup will start



19, Installed



If you get "The WS-Management service does not support the request" error when you open the exchange powershell execute the command below on command prompt

%SystemDrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir -enable

and reset the  IIS by runnig

IISReset



2013 OWA with new office 2013 logo




First look of OWA 2013

 

Options page


Installed Apps page






Wednesday, July 18, 2012

CentOS 6 : Using DVD/CD as your local repo #2

Put the dvd in to the cdrom, and we need to mount the dvd.
#mkdir /media/CentOS_6.2_Final

after that mount the dvd with this command:

#mount /dev/cdrom /media/CentOS_6.2_Final
and then Edit CentOS-Media.repo
vi /etc/yum.repos.d/CentOS-Media.repo

You will see something like this

baseurl=file:///media/CenOS/
       and blah blah

Change the "file=:///media/CentOS" to "file=:///media/CentOS_6.2_Final"


Save the file


and install package

yum --disablerepo=\* --enablerepo=c6-media

for example to install perl

yum --disablerepo=\* --enablerepo=c6-media install perl

Friday, June 01, 2012

Adding a user to sudo group

Open sudo config file
visudo

Go to the end of the file and uncomment %wheel ALL=(ALL) ALL line, it is located about 10 line above from the end of the file.

This change will activate the wheel group, and allow you to add a user to the wheel group (it is like local admin group in windows)
Save the change and close the file

add a user to the wheel group, in this example add a user called test to the wheel group

usermod -a -G wheel test


Configuring an NTP Client

open ntp.conf and edit it
nano /etc/ntp.conf

check status of ntpd service

service ntpd status

if it is not running start the service

service ntpd start

Wednesday, May 30, 2012

CentOS 6 How to renew DHCP and restart NIC

To release the DHCP address on the system
dhclient -r

To obtain a new address
dhclient

To check the new IP
ifconfig

To restart network service
ifdown eth0
ifup eth0
/etc/init.d/network restart

CentOS 6: Install Packages Via yum Command Using DVD / CD as Repo

Open up the repo file and edit
vi /etc/yum.repos.d/CentOS-Media.repo
read the content carefully

set enabled to 1
enabled=1

Might want to add file:///media/CentOS_6.2_Final on the baseurl

so baseurl would look like this after it is added, the last line woth bold idicated that it is added.

baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
file:///media/CentOS_6.2_Final/

Install a package with only the CDROM repo

# yum --disablerepo=\* --enablerepo=c6-media install pacakge-name

Thursday, August 18, 2011

How to Restore Default Error Pages in IIS7

Well it happend to me today, I accidently deleted the Error page 403!


It says inherited, so I tried to find how I can inherite from the top site, no luck. I even removed HTTP Errors and re-added...no luck
I manually created 403, its "Entry Type" was set "local" and I got 500 error when I try to open the site.


Finally I looked at the web.config


howa,,,there it is


I removed it, and refreshed the iis...yahoo
I got my 403 back!


That was dumb, but I am glad it is fixed!