วันพฤหัสบดีที่ 27 พฤษภาคม พ.ศ. 2564

การใช้ Powershell run program และ kill program ร่วมกับ regex

 File powershell จะนามสกุล .ps1

comment ใช้ # นำหน้า

การเรียก process ใช้ & นำหน้า

มี argument ใช้    param($ตัวแปร)

ตัวอย่าง เป้นการ list process ทีเปิดport ใว้

การ filter ให้ใช้ regex 



# kill process select port

Write-Output "Kill process at port"

param ($port)

$foundProcesses = netstat -ano | findstr :$port

$activePortPattern = ":$port\s.+LISTENING\s+\d+$"

# search between number and string

$pidNumberPattern = "\d+$"

# if search between number use "\d+\d"

#If 

IF ($foundProcesses | Select-String -Pattern $activePortPattern -Quiet) {

  $matches = $foundProcesses | Select-String -Pattern $activePortPattern

  $firstMatch = $matches.Matches.Get(0).Value

#Match by regex

  $pidNumber = [regex]::match($firstMatch, $pidNumberPattern).Value

  taskkill /pid $pidNumber /f

}


อีกตัวอย่าง เอา title ของ process และมา kill. โดยใช้ Get-Process

#& TASKLIST /v /fo table | findstr "PCS"
param ($port)

$findV = Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize | findstr /I 'PCS' | findstr $port
IF($findV){
$pid1= [regex]::match($findV,"\d+\d").Value

$pid1
#kill it
 taskkill /pid $pid1 /f
}

วันจันทร์ที่ 17 พฤษภาคม พ.ศ. 2564

pull sql server Docker และ Push กลับ

วีธีการ get Sql Server ของ MyHub

ติดตั้ง Docker

ครั้งแรก

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Express' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu

docker container list -a จะได้ระหัส containerid 0cf1dfafff39

เอา data mydb เข้า docker

docker cp D:/SQLData/myDb.mdf 0cf1dfafff39:/var/opt/mssql/data

docker cp D:/SQLData/myDb_log.ldf 0cf1dfafff39:/var/opt/mssql/data

ไป Attach ด้วย SQL Management

การ Push กลับ ที่ Docker Hub  hub.docker.com สร้าง user เช่น MyHub

สร้าง Repository เช่น sqldata

แล้วทำการCommit เป็นชื่อ hub/repository:comment

docker container commit 0cf1dfafff39 MyHub/sqldata:latest

จะได้ เลขมาใหม่

docker login --username=MyHub

ใส่ Password

docker push MyHub/sqldata

จะ push ขึ้น hub ได้


จะเปลี่ยน สถานะจาก public เป็น private ก็ได้ แก้ที่ setting ใน Web hub.docker.com


กรณีนำมาใช้ 

docker pull MyHub/sqldata

แล้ว Run กรณี เป็น SQL Server ต้อง ระบุ forward port ด้วย -P 1433:1433 ใน docker run

หรือ ดุจาก Dash board image -> new container และ ระบุที่ Port เป็น 1433

docker run -p 1433:1433 -d MyHub/sqldata:latest 

ไม่นั้น Sqlmanagement จะหาไม่เจอ