前提条件 参考
批量拷贝脚本到远程主机
- $local_path="D:\PowerShell\Powershell-Windows_Admin_Center-install\" #本地脚本存放目录
- $Destination="d:\" #本地拷贝的脚本到目标主机的目录
- Invoke-Command -filepath D:\powershell-install-windows_exporter-0.20.ps1 -ComputerName $server -Credential $cred #此处是直接执行本地代码生效到目标主机,此处我注释了,需要此案例的可以启用注释掉下方invoke-expression段
- invoke-expression -command D:\powershell-install-windows_exporter-0.20.ps1 #此处执行的是拷贝到目标主机上的脚本,替换成你自己的脚本名称
- $user="administrator" #用户,必须是管理员
- $password=ConvertTo-SecureString "YOU_password" -AsPlainText -Force #用户密码
- $cred=New-Object System.Management.Automation.PSCredential($user,$password)
- $pchost='192.168.19.10','192.168.19.11' #主机IP,有多少填写多少,注意格式
- $port=5985 #winrm http服务端口
powershell-Remote-Software-Installation.ps1
<# Powershell Remote Software Installation
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+ _____ _____ _ _ _ +
+ | __ \ / ____| | | | |+
+ | |__) |____ _____ _ _| (___ | |__ ___| | |+
+ | ___/ _ \ \ /\ / / _ \ '__\___ \| '_ \ / _ \ | |+
+ | | | (_) \ V V / __/ | ____) | | | | __/ | |+
+ |_| \___/ \_/\_/ \___|_| |_____/|_| |_|\___|_|_|+
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
# Remote Software Installation
# .\powershell-Remote-Software-Installation.ps1
#>
$user="administrator"
$password=ConvertTo-SecureString "YOU_host_password" -AsPlainText -Force
$cred=New-Object System.Management.Automation.PSCredential($user,$password)
$pchost='192.168.19.10'
$port=5985
$local_path="D:\powershell-install-windows_exporter-0.20.ps1"
$Destination="d:\"
foreach($server in $pchost){
#Create a session with remote computer using New-Session
$Session=New-PSSession -ComputerName $server -Credential $cred
Write-Host "Log on to the host $pchost" -ForegroundColor Green
Enter-PSSession -ComputerName $server -port $port -Credential $cred
#Write-Host "Execute local script to take effect on remote server $pchost" -ForegroundColor Green
#Invoke-Command -filepath D:\powershell-install-windows_exporter-0.20.ps1 -ComputerName $server -Credential $cred
Write-Host "Use Copy-Item to copy files to a remote computer $pchost" -ForegroundColor Green
Copy-Item -Path "$local_path" -Destination $Destination -ToSession $session -Recurse
Write-Host "Execute the script directly on the server directory $pchost" -ForegroundColor Green
Invoke-Command -ComputerName $server -Credential $cred -ScriptBlock {
invoke-expression -command D:\powershell-install-windows_exporter-0.20.ps1
}
}
创建安装windows_exporter自动化脚本
powershell-install-windows_exporter-0.20.ps1
<# Powershell Install windows_exporter-0.20
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+ _____ _____ _ _ _ +
+ | __ \ / ____| | | | |+
+ | |__) |____ _____ _ _| (___ | |__ ___| | |+
+ | ___/ _ \ \ /\ / / _ \ '__\___ \| '_ \ / _ \ | |+
+ | | | (_) \ V V / __/ | ____) | | | | __/ | |+
+ |_| \___/ \_/\_/ \___|_| |_____/|_| |_|\___|_|_|+
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
# Powershell Install windows_exporter-0.20
# .\powershell-install-windows_exporter-0.20.ps1
#>
#windows_exporter-0.20
$windows_exporter = "windows_exporter-0.20.0-amd64.msi"
$url = "https://github.com/prometheus-community/windows_exporter/releases/download/v0.20.0/"
$drive = "D:\"
Write-Host "download windows_exporter-0.20 up D dish" -ForegroundColor Green
wget -Uri $url/$windows_exporter -UseBasicParsing -OutFile $drive$windows_exporter
Write-Host "Install windows_exporter" -ForegroundColor Green
Start-Process "D:\$windows_exporter" -ArgumentList "-qn" -wait
Write-Host "Delete the downloaded file" -ForegroundColor Green
rm $drive$windows_exporter
Write-Host "Restart winRM the service" -ForegroundColor Green
Restart-Service winRM
执行一键批量安装到所有主机
.\powershell-Remote-Software-Installation.ps1