Я працюю над сценарієм powerhell, який віддалено включатиме / вимикає конкретні правила брандмауера на віддаленій машині в локальній підмережі. Ось код:
$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.
Я б запропонував вам переписати і протестувати кожен сегмент по одному, щоб переконатися, що ви отримуєте те, що думаєте. У вас є деякі реальні проблеми, IMHO, у цьому сценарії. Рука полягає в тому, що ви використовуєте віддалені команди для себе. Це не можна робити з робочими станціями в більшості випадків. Спробуйте це на власному комп’ютері і подивіться, що я маю на увазі. --- Invoke-Command -ComputerName $ env: COMPUTERNAME -ScriptBlock {Get-Date} --- він просто зависне --- тоді спробуйте цю ж команду на сервері --- вона буде успішною.
—
постаноте