เรียกใช้คำสั่ง - เวลาดำเนินการที่ยาวนาน


0

ฉันกำลังทำงานกับสคริปต์ 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"

นี่คือปัญหา เมื่อผู้ใช้รันสคริปต์บนเครื่องเป้าหมายสคริปต์จะใช้เวลานานในการรันหรือจะล้มเหลว ฉันจะใช้ระบบแก้ไขจุดบกพร่องพื้นฐานเพื่อรู้ว่าเกิดอะไรขึ้นจริงหรือไม่ บางทีโครงสร้างของสคริปต์นี้ผิดหรือฉันควรเขียนสคริปต์นี้ใหม่

ฉันจะเพิ่มว่า: ผู้ใช้มีสิทธิ์ของผู้ดูแลระบบบนเครื่องเป้าหมาย ในโดเมนโฆษณาของเราเรามี gpos ซึ่งอนุญาตการรับส่งข้อมูล winrm


ฉันขอแนะนำให้คุณเขียนใหม่และทดสอบแต่ละส่วนทีละครั้งเพื่อให้แน่ใจว่าคุณได้รับสิ่งที่คุณคิด คุณมีปัญหาจริงแล้ว IMHO ในสคริปต์นี้ มือเป็นเพราะคุณใช้คำสั่งจากระยะไกลกับตัวเอง คุณไม่สามารถทำได้ด้วยเวิร์กสเตชันในกรณีส่วนใหญ่ ลองทำสิ่งนี้บนคอมพิวเตอร์ของคุณและดูว่าฉันหมายถึงอะไร --- เรียกใช้คำสั่ง -ComputerName $ env: COMPUTERNAME -ScriptBlock {Get-Date} --- มันจะหยุด --- แล้วลองใช้คำสั่งเดียวกันบนเซิร์ฟเวอร์ --- มันจะประสบความสำเร็จ
postanote
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.