2015-09-17 7 views
5

मैं एक टेक्स्ट फ़ाइल में ऑफ़लाइन कंप्यूटर रिकॉर्ड करने का प्रयास कर रहा हूं ताकि मैं उन्हें बाद में फिर से चला सकूं। ऐसा प्रतीत नहीं होता है कि इसे रिकॉर्ड किया जा रहा है या पकड़ा गया है।पावरहेल परीक्षण कनेक्शन के साथ प्रयास/पकड़

function Get-ComputerNameChange { 

    [CmdletBinding()] 
    Param(
    [Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True)] 
    [string[]]$computername, 
    [string]$logfile = 'C:\PowerShell\offline.txt' 
    ) 




    PROCESS { 

     Foreach($computer in $computername) { 
     $continue = $true 
     try { Test-Connection -computername $computer -Quiet -Count 1 -ErrorAction stop 
     } catch [System.Net.NetworkInformation.PingException] 
     { 
      $continue = $false 

      $computer | Out-File $logfile 
     } 
     } 

     if($continue){ 
     Get-EventLog -LogName System -ComputerName $computer | Where-Object {$_.EventID -eq 6011} | 
     select machinename, Time, EventID, Message }}} 

उत्तर

3

trycatch आईएनजी अपवादों के लिए है। आप -Quiet स्विच का उपयोग कर रहे हैं, इसलिए Test-Connection$true या $false रिटर्न देता है, और कनेक्शन विफल होने पर throw अपवाद नहीं है।

बस कार्य करें:

if (Test-Connection -computername $computer -Quiet -Count 1) { 
    # succeeded do stuff 
} else { 
    # failed, log or whatever 
} 
+0

हाँ कि काम किया। क्या आप जानते हैं कि यह मेरे टेक्स्ट फ़ाइल में पिछले कंप्यूटर नाम में केवल पाइप क्यों है? मैं सामग्री प्राप्त करने की कोशिश कर रहा हूं "\\ test \ c $ \ powershell \ computers.txt" | get-computernameChange – MattMoo

+0

@ user3620584 आप कैसे जानते हैं कि यह केवल अंतिम में पाइपिंग है? – briantist

+0

एक परीक्षण के रूप में मैंने 3 कंप्यूटर नामों में रखा है जो मौजूद नहीं हैं और यह केवल लॉग फ़ाइल में अंतिम सूची सूचीबद्ध करता है। – MattMoo

संबंधित मुद्दे