среда, 13 декабря 2017 г.

Показать все сервисы, запущенные не от локальных системных учёток.

Get-WmiObject win32_service | ?{-not (($_.StartName -match "LocalService") -or ($_.StartName            -match "LocalSystem") -or ($_.StartName -match "NetworkService"))} | select name,Startname

четверг, 30 ноября 2017 г.

Show all computer with old lastlogondate

get-adcomputer -filter {Enabled -eq $True} -searchbase "ou=Computers,dc=domain,dc=net" -properties lastlogondate, lastlogon | where{(get-date $_.LastLogonDate) -lt (get-date 2017-11-01)} |    sort-object lastlogondate | select name, lastlogondate

вторник, 28 ноября 2017 г.

ManageEngine ServiceDesk moving from linux to windows attachments problem: can't find attachment.

use servicedesk;
SET SQL_SAFE_UPDATES = 0;
update sdeskattachment set ATTACHMENTPATH = replace(ATTACHMENTPATH, "/", "\\") WHERE 1=1;

пятница, 29 сентября 2017 г.

powershell script for set some ad attributes
in data - csv file

#by alex
import-module activedirectory
clear
$path = 'c:\scripts\users-info-update.csv'

$csv = Import-Csv $path

foreach($usercsv in $csv){
 $usercsv.DisplayName
 if($usercsv.mobile){
  Set-ADUser $usercsv.sAMAccountName -mobile $usercsv.mobile
  "set mobile "+$usercsv.mobile
  }

 if($usercsv.description){
  Set-ADUser $usercsv.sAMAccountName -Description $usercsv.description
  "set description "+ $usercsv.description
  }

if($usercsv.title){
  Set-ADUser $usercsv.sAMAccountName -Title $usercsv.title
  "set title "+$usercsv.title
  }

 Set-ADUser $usercsv.sAMAccountName -Company "Company"
 if($usercsv.ipPhone){
  try{
   Set-ADUser $usercsv.sAMAccountName -Add @{'ipPhone'=[string]$usercsv.ipPhone}
   "add ipPhone "+$usercsv.ipPhone
   }
  catch{
    Set-ADUser $usercsv.sAMAccountName -Replace @{'ipPhone'=[string]$usercsv.ipPhone}
    "replace ipPhone "+$usercsv.ipPhone
    }
 }

 if($usercsv.telephoneNumber){
    Set-ADUser $usercsv.sAMAccountName -OfficePhone $usercsv.telephoneNumber
   "replace telephoneNumber "+$usercsv.telephoneNumber
  try{
   Set-ADUser $usercsv.sAMAccountName -Add @{'HomePhone'=[string]$usercsv.telephoneNumber}
   }
  catch{
    Set-ADUser $usercsv.sAMAccountName -Replace @{'HomePhone'=[string]$usercsv.telephoneNumber}
    }

 }

if($usercsv.facsimileTelephoneNumber){
  try{
   Set-ADUser $usercsv.sAMAccountName -Add @{'facsimileTelephoneNumber'=[string]$usercsv.facsimileTelephoneNumber}
   "add facsimileTelephoneNumber "+$usercsv.facsimileTelephoneNumber
   }
  catch{
    Set-ADUser $usercsv.sAMAccountName -Replace @{'facsimileTelephoneNumber'=[string]$usercsv.facsimileTelephoneNumber}
   "replace facsimileTelephoneNumber"+$usercsv.facsimileTelephoneNumber
    }
 }
}

среда, 14 июня 2017 г.

Trigger for ManageEngine Servicedesk Plus. example
Триггер для ManageEngine Servicedesk Plus. пример

SD trigger string:
powershell -file c:\scripts\cancelrequest.ps1 отклонена $WORKORDERID

code:

#powershell script for manageengine SDP trigger
#by *me
Param ([string] $txt, [string]$WORKORDERID)
$TECHNICIAN_KEY='XXXXXX-XXXXXXX-XXXXXX-XXXXXX'
$SDEMAIL="sd@domain.com"
$SUBJECT = "Ваша заявка ##{0}## была {1}" -f $WORKORDERID, $txt  
$LOGFILE="c:\scripts\cancelrequest.log"
$MAILSERVER="mail.domain.com"
$SDHOST="https://localhost"

#errorcodes
$REQUESTERNOTFOUNDERROR=-101


function sendrequest($uri)
{
 $response = Invoke-RestMethod -Uri $uri
 if($response.operation.result.status -ne "Success"){
   $message = "function {0} returns non success result:`n{1}" -f $MyInvocation.MyCommand.Name, $response.operation.result  
   throw $message}
 return $response
}

function getrequest([string]$id)
{
 $uri=$SDHOST+'/sdpapi/request/'+$id+'?OPERATION_NAME=GET_REQUEST&TECHNICIAN_KEY='+$TECHNICIAN_KEY+'&format=json'
 Invoke-RestMethod -Uri $uri -Method Get
 return $response
}


function getresolution([string]$id)
{
 $uri=$SDHOST+'/sdpapi/request/'+$id+'?OPERATION_NAME=GET_RESOLUTION&TECHNICIAN_KEY='+$TECHNICIAN_KEY+'&format=json'
 $response = sendrequest($uri) 
 return $response.operation.Details.RESOLUTION
}

function getrequester($r)
{
 $uri=$SDHOST+'/sdpapi/requester?OPERATION_NAME=GET_ALL&TECHNICIAN_KEY='+$TECHNICIAN_KEY+'&INPUT_DATA={"operation":{"details":{"name":"'+$r+'"}}}&format=json'
 #log("uri="+$uri)
 $response = sendrequest($uri)
 return $response.operation.details
}

function log([string]$txt)
{
 add-content $LOGFILE $txt 
}

function main(){
  log(Get-Date -format "dd.MM.yyyy H:m")
  log("WORKORDERID="+$WORKORDERID)
  $request = getrequest($WORKORDERID)
  $REQUESTER = $request.REQUESTER
  log("REQUESTER="+$REQUESTER) 

  $requesterdata=getrequester($REQUESTER)
  if(![boolean]$requester){
   log("Requester not found. Abnormal oO")
   return $REQUESTERNOTFOUNDERROR}

  $to = @($requesterdata.emailid)[0] 
  $from = $SDEMAIL 
  $body = getresolution($WORKORDERID) 
  log("Sending mail to:"+$to)
  log("="*40)
  $encoding = [System.Text.Encoding]::UTF8
  send-MailMessage -SmtpServer $MAILSERVER -To $to -From $from -Subject $SUBJECT -Body $body -BodyAsHtml -Encoding $encoding
}

add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    
    public class IDontCarePolicy : ICertificatePolicy {
        public IDontCarePolicy() {}
        public bool CheckValidationResult(
            ServicePoint sPoint, X509Certificate cert,
            WebRequest wRequest, int certProb) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy 

try{
 main}
catch{
   $ErrorMessage = $_.Exception.Message
   log("Exception detected!`n"+"Error message:"+$ErrorMessage+"`n"+'='*40)
   return -1}

среда, 3 мая 2017 г.

create ssl cert for chrome 58 (subjectAltName add)
openssl req \
    -newkey rsa:2048 \
    -x509 \
    -nodes \
    -keyout server.key \
    -new \
    -out server.crt \
    -subj /CN=dev.mycompany.com \
    -reqexts SAN \
    -extensions SAN \
    -config <(cat /System/Library/OpenSSL/openssl.cnf \
        <(printf '[SAN]\nsubjectAltName=DNS:dev.mycompany.com')) \
    -sha256 \
    -days 3650