Powershell脚本
在远程计算机能够执行setup.exe后,如何确定禁用PSRemoting?
我是否在远程计算机能够执行setup.exe之前禁用PSRemoting?
$password = get-content D:\Script\cred.txt | convertto-securestring
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "Administrator",$password
$j = "remote_computer"
$comp = "\\"+$j
$exe = "setup.exe"
[String]$cmd = "cmd /c 'C:\share\$exe'"
[ScriptBlock]$sb = [ScriptBlock]::Create($cmd)
$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)
$str = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
$enable_command = "D:\PSTools\PsExec.exe $comp -u Administrator -p $str -accepteula powershell.exe c:\share\ps_enable.ps1"
Invoke-Expression $enable_command
try{
invoke-command -ComputerName $j -Credential $credentials -ScriptBlock $sb
}
catch [System.Exception]{
continue
}
$disable_command = "D:\PSTools\PsExec.exe $comp -u Administrator -p $str -accepteula powershell.exe c:\share\ps_disable.ps1"
Invoke-Expression $disable_command
答案 0 :(得分:1)
很简单,使用Invoke-Command的AsJob开关并将其分配给变量。然后使用Wait-Job,以便在继续禁用PSRemoting之前知道作业已完成。
try{
$SetupJob = invoke-command -ComputerName $j -Credential $credentials -ScriptBlock $sb -AsJob
}
catch [System.Exception]{
continue
}
$SetupJob|Wait-Job
$disable_command = "D:\PSTools\PsExec.exe $comp -u Administrator -p $str -accepteula powershell.exe c:\share\ps_disable.ps1"
Invoke-Expression $disable_command