Solved

using Powershell, How to list all servers with region format other than English (Australia) ?

Posted on 2014-12-22
6
202 Views
Last Modified: 2015-02-12
Hi,

Can anyone here please assist me how to modify the script below to display the servers Locale and Regional settings in the domain ?

$path = "C:\temp\"
$serverlist = Get-QADComputer -SearchRoot 'mydomain.local/Servers/Production Servers' -OSName "Windows*Server*" -ShowProgress -Activity
 
foreach ($server in $serverlist){
    $result = Test-Connection $server -Count 1 -Quiet
    if ($result -eq "True") {
         # I need some help here.....
    }
    else {
        Add-Content "$path\OfflineServers.txt" -Value $server
    }
}

Open in new window


because for some servers, I received confusing timestamp MM/DD/YYYY instead of DD/MM/YYYY as the standard in our country.

Thanks,
0
Comment
  • 3
  • 3
6 Comments
 
LVL 11

Accepted Solution

by:
marek1712 earned 500 total points
ID: 40514449
You can check for this property:
$Host.CurrentCulture

Open in new window

i.e.:
$computers = Get-Content C:\servers.txt
$cred = Get-Credential
foreach ($item in $computers)
{
Invoke-Command -Command {$Host.CurrentCulture} -ComputerName $item -Credential $cred
}

Open in new window

Make sure WinRM is working properly in your company.

THEN, based on the LCID you can do some substring swapping in the conditional statement to get the date in the correct format.
0
 
LVL 7

Author Comment

by:Senior IT System Engineer
ID: 40514458
Marek,

will that works for Win2003 host ?
0
 
LVL 11

Expert Comment

by:marek1712
ID: 40515769
If it has PowerShell 2.0 installed - yes. Make sure to enable WinRM though (i.e. through winrm quickconfig).
Alternatively - you can check this WMI class, especially Locale and OSLanguage properties.
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 7

Author Comment

by:Senior IT System Engineer
ID: 40527069
Hi marek,

for some server, I got  the following error with WinRM:

[DomainController01-VM] Connecting to remote server failed with the following error message : The client cannot connect to the destination specified in
 the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the
WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following c
ommand on the destination to analyze and configure the WinRM service: "winrm quickconfig". For more information, see the about_Remote_Trou
bleshooting Help topic.
    + CategoryInfo          : OpenError: (:) [], PSRemotingTransportException
    + FullyQualifiedErrorId : PSSessionStateBroken

how to perform Try catch to change the error message into just the server name only that needs to be enabled rahter than the full detailed error message ?

this is your script that I have modified:

$computers = Get-QADComputer -SearchRoot "domain.com/Servers/DC Servers" | Where-Object {(Test-Connection $_.Name -Count 1 -Quiet)}
$cred = Get-Credential -Credential "DOMAIN\Administrator"
ForEach ($item in $computers) {
	try {
		Invoke-Command -ScriptBlock {$Host.CurrentCulture} -ComputerName $item.Name -Credential $cred
	} catch [Exception] {    
	    If ($_.Exception -is [System.Management.Automation.Remoting.PSRemotingTransportException]) {
	        Write-Host "Error while sending command to the " $item.Name " server"
	    } Else {
	        $_.Exception.GetType().FullName
	    } 
	}
}

Open in new window

0
 
LVL 11

Assisted Solution

by:marek1712
marek1712 earned 500 total points
ID: 40527823
What happens when you try to issue winrm quickconfig on these machines by hand?
You can use $ErrorActionPreference variable to handle errors or ErrorVariable to store it in another variable.
You could also use the Split method to cut through the error message and get only the computer name. Try doing it yourself - shouldn't be too hard. If it is - let me know and I'll help you with the script itself.
0
 
LVL 7

Author Comment

by:Senior IT System Engineer
ID: 40528542
Marek,

Yes with the winrm quickconfig command it enables the Powershell.

About hundreds of the server is not running so it is going to take very long time to enable it manually one by one.

But as for splitting the error, I'm not sure how to so that since I'm just a beginner in Powershell. I appreciate any help and suggestion so that I can export it to csv for easy read.

Thanks
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

You might have come across a situation when you have Exchange 2013 server in two different sites (Production and DR). After adding the Database copy in ECP console it displays Database copy status unknown for the DR exchange server. Issue is strange…
This article will help you understand what HashTables are and how to use them in PowerShell.
To efficiently enable the rotation of USB drives for backups, storage pools need to be created. This way no matter which USB drive is installed, the backups will successfully write without any administrative intervention. Multiple USB devices need t…
This tutorial will walk an individual through the steps necessary to install and configure the Windows Server Backup Utility. Directly connect an external storage device such as a USB drive, or CD\DVD burner: If the device is a USB drive, ensure i…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now