PowerShellリモート再起動IISとService

2252 ワード

接続するコンピュータをテストして遠隔をつけますか?
Test-WsMan 192.168.1.1

またはリモートコンピュータで直接表示
Get-Service WinRM

開かなかったら開ける
Enable-PSRemoting –Force

接続する前にリモートのコンピュータを信頼する必要があります
 TrustedHosts 

get-item wsman:\localhost\Client\TrustedHosts

 TrustedHosts 

set-item wsman:\localhost\Client\TrustedHosts -value *

 TrustedHosts 

set-item wsman:\localhost\Client\TrustedHosts -value *.omg.com

 TrustedHosts 

set-item wsman:\localhost\Client\TrustedHosts -value <ComputerName>

 IP TrustedHosts 

set-item wsman:\localhost\Client\TrustedHosts -value 192.168.1.2

セッションに入る
Enter-PSSession 192.168.1.1 -Credential "OMG\admin"

リンクの共有
https://forsenergy.com/zh-cn/windowspowershellhelp/
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_troubleshooting?view=powershell-7
https://www.pstips.net/powershell-online-tutorials
自動的に管理者IDを使用して実行
$currentWi = [Security.Principal.WindowsIdentity]::GetCurrent()
$currentWp = [Security.Principal.WindowsPrincipal]$currentWi

if( -not $currentWp.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
$boundPara = ($MyInvocation.BoundParameters.Keys | foreach{
'-{0} {1}' -f? $_ ,$MyInvocation.BoundParameters[$_]} ) -join ' '
$currentFile = (Resolve-Path? $MyInvocation.InvocationName).Path

$fullPara = $boundPara + ' ' + $args -join ' '
Start-Process "$psHome\powershell.exe"?? -ArgumentList "$currentFile $fullPara"?? -verb runas
return
}

IISの再起動を自動化するApplication Pool
$IP = '192.168.1.1'
$Username = 'omg\administrator'
$Password = 'laotie666'

$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass

$s = New-PSSession $IP -Credential $Cred

Invoke-Command $s -ScriptBlock { Restart-WebAppPool  -Name "Test" }

リモートサービスの自動再起動
Invoke-Command $IP -Credential $Cred -ScriptBlock { Get-Service -Name 'Test' | Restart-Service -Force }