понедельник, 21 мая 2018 г.

ipvsadm + nginx for rdp
nginx conf

worker_processes 2;
error_log /var/log/nginx/error.log;

events {
    worker_connections 16384;
}

stream {

error_log /var/log/nginx/stream_error_rdp.log;
upstream backend{
    server 10.0.0.2:443;
# weight=4 max_fails=1; #fail_timeout=20;
}

server{

    listen 443;
    proxy_pass backend;
}
}

ipvsadm understandable
Set default printer by Powershell (wmi)
Назначить принтер по умолчанию через powershell (wmi)

$Printername = 'Мой домашний Xerox iGen3'
$Printers = Get-WmiObject -Class Win32_Printer
$Printer = $Printers | Where{$_.Name -eq $Printername}
$Printer.SetDefaultPrinter() | out-null

четверг, 17 мая 2018 г.

Get information about virtual machines in Hyper-V (powershell, wmi)

#by alex
filter Import-CimXml 

   $CimXml = [Xml]$_ 
   $CimObj = New-Object -TypeName System.Object 
   foreach ($CimProperty in $CimXml.SelectNodes("/INSTANCE/PROPERTY[@NAME='Name']")) 
      { 
         $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE 
      } 
   foreach ($CimProperty in $CimXml.SelectNodes("/INSTANCE/PROPERTY[@NAME='Data']")) 
      { 
         $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE 
      } 
   $CimObj 


$vmsresult = @()
$HyperVServers = @("SERVER-VH01","SERVER-VH02","SERVER-VH03")
foreach($HyperVServer in $HyperVServers){
$VMNames = Invoke-Command -computername $HyperVServer {Get-VM  | where {$_.State -eq 'Running'}}
foreach($VMName in $VMNames){
write-host "Work for vm: $($VMName.Name)"
$query = "Select * From Msvm_ComputerSystem Where ElementName='" + $($VMName.Name) + "'"
$Vm = gwmi -computername $HyperVServer -namespace root\virtualization\v2 -query $query
$query = "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent"
$Kvp = gwmi -computername $HyperVServer -namespace root\virtualization\v2 -query $query
$vmdata = $Kvp.GuestIntrinsicExchangeItems | Import-CimXml
$VmObj = New-Object -TypeName System.Object
$VmObj | Add-Member -MemberType NoteProperty -Name "Name" -Value $($VMName.Name)
$VmObj | Add-Member -MemberType NoteProperty -Name "OS" -Value $(($vmdata | ?{$_.Name -eq "OSName"}).Data)
$VmObj | Add-Member -MemberType NoteProperty -Name "IPv4" -Value $(($vmdata | ?{$_.Name -eq "NetworkAddressIPv4"}).Data)
$vmsresult+=$VmObj
}

}

$vmsresult contains VMs

Get same information about virtual machines in PowerCLI :

Connect-VIServer VServer
get-vm * | where {$_.PowerState -eq "PoweredOn"} | Sort | Get-View -Property @("Guest.HostName", "Guest.GuestFullName", "Guest.Ipaddress", "Name") | Select -Property @{N="HostName";E={$_.Guest.HostName}}, @{N="OS";E={$_.Guest.GuestFullName}}, @{N="IPv4";E={$_.Guest.IPaddress}}, @{N="VM Name";E={$_.Name}} | Format-Table -AutoSize



Get same information about hosts in AD by powershell :

$hostsresult = @()
$hosts = get-adcomputer -property * -Filter {Enabled -eq $true} | sort-object name | where {$_.OperatingSystem -like "*Server*"}
foreach($shost in $hosts){
 write-host "Work for $shost"
 $HostObj = New-Object -TypeName System.Object
 $HostObj | Add-Member -MemberType NoteProperty -Name "Name" -Value $($shost.Name)
 $HostObj | Add-Member -MemberType NoteProperty -Name "OS" -Value $($shost.OperatingSystem)
 $ipaddresses = Invoke-Command -ComputerName $shost.name -EA SilentlyContinue -ScriptBlock {(gwmi Win32_NetworkAdapterConfiguration -EA SilentlyContinue | ?{$_.IPAddress}).IPAddress}
 if(-not $ipaddresses){$ipaddresses = "not access winrm"}
 if([string]$ipaddresses.GetType().BaseType -eq "array"){
  $ipaddresses = $ipaddresses -Join ', '
 }
  $HostObj | Add-Member -MemberType NoteProperty -Name "IPv4" -Value $ipaddresses
 $hostsresult+= $HostObj
}

$hostsresult contains hosts
================================================ (another)
$clusterNodes = Get-ClusterNode
ForEach($item in $clusterNodes){
$VMS= Get-VM -ComputerName $item.Name | Where-Object {$_.State –eq 'Running'} 

foreach ($vm in $VMS){
$hdds=Get-VMHardDiskDrive $vm
foreach($hdd in $hdds) {
  $hd = Invoke-Command -computername $item.Name -ScriptBlock {param($hdd); Get-VHD -Path $hdd.Path} -argumentlist $hdd
  $hd | select @{N='VMname'; e={$vm.Name}}, @{N='Mb'; e={$_.FileSize/1Mb}}, @{N='Time'; e={[int]($_.FileSize/1Mb/150/60+30)}}
 }
}

}

среда, 16 мая 2018 г.

IMSVA 9 (8/7) can not send emails to aliases

resolving:


DETAILS
To resolve this issue, do the following in the Database Mail Attribute:

Log in to the IMSVA shell via the Command Line Interface.
When logging in to the IMSVA shell or Command Line Prompt, make sure that you have root privilege.
Run the following command:
# /opt/trend/imss/PostgreSQL/bin/psql imss sa

Or
# cd /opt/trend/imss/PostgreSQL/bin/
# ./psql imss sa

On the "imss=#" prompt, type:
update tb_global_setting set value='proxyAddresses' where name='mail_attr';

To quit, type "\q".
Log on to the IMSVA web console. Disable recipient checking and then save the settings.
Go back to the IMSVA web console to enable recipient checking again and save the settings.
Check and confirm that the issue has been resolved.


понедельник, 14 мая 2018 г.


Получаем инфу по задачам на спулере:
Get spooler jobs powershell:
Get-WMIObject Win32_PerfFormattedData_Spooler_PrintQueue | sort-object -desc jobs, TotalJobsPrinted, JobErrors | Select Name, @{Expression={$_.jobs};Label="CurrentJobs"}, TotalJobsPrinted, JobErrors

Получаем сколько сожрано памяти в МБ деревом процесса spoolsv:
Get memory used in Mb by group spoolsv process:
((get-process spoolsv | Group-Object -Property ProcessName).Group | Measure-Object WorkingSet -Sum).Sum/1Mb