Я работаю над сценарием powershell, который будет удаленно включать / выключать определенное правило брандмауэра на удаленной машине в локальной подсети. Вот код:

$pc="PC1"
if (Test-Connection -ComputerName $pc -Count 1 -quiet) {
$RuleName = "{F5E13AFE-90F7-4EFA-B547-14B3262D8507}"
ICM -ComputerName PC1 -ScriptBlock {
Param($FWRule)
IF(Get-NetFirewallRule $FWRule | where{$_.Enabled -eq $True}){Disable-NetFirewallRule $FWRule}
ELSE{Enable-NetFirewallRule $FWRule}
IF(Get-NetFirewallRule $FWRule | where{$_.Enabled -eq $True}){Write-Host "Internet access is blocking now`n" -ForegroundColor Red}
ELSE{Write-host "You have an access to Internet`n" -ForegroundColor Green}
$value = read-host "Script completed,`npress [Enter] to exit"
Switch ($value){
'Enter' {'Koniec' ; exit}
}
} -ArgumentList $RuleName }
else {Read-Host "Computer"$PC "is offline - script cannot be execute`npress [Enter] to exit"

Здесь проблема. Когда пользователь выполняет сценарий на целевой машине, выполнение сценария займет много времени или произойдет сбой. Как я могу реализовать базовую систему отладки, чтобы знать, что на самом деле происходит? Может быть, структура этого скрипта неверна или я должен переписать этот скрипт?

Я добавлю, что: Пользователь имеет права администратора на целевой машине. В нашем домене AD есть gpos, который разрешает трафик winrm.

0