2013-10-22 80 views
0

我想弄清楚如何編寫powershell腳本,如果PowerShell無法連接到\ 10.10.10.10 \ C $ \ Users,它應該嘗試連接到\ 10.10.10.10 \ C $ \文件和設置IF Get-ChildItem:無法找到路徑然後連接到其他路徑

到目前爲止,我有以下的代碼

$Win32OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName '10.10.10.10' 
$SysDrv = $Win32OS.SystemDrive 
$SysDrv = $SysDrv.Replace(":","$") 
$ProfDrv = "\\" + '10.10.10.10' + "\" + $SysDrv 
$ProfLoc = Join-Path -Path $ProfDrv -ChildPath "User" 

try 
{ 
    Get-ChildItem $ProfLoc | ? { $_.PsIsContainer} | Sort LastWriteTime -Descending | Select -expand Name -First 1 
} 
catch [Exception] 
{ 
    return "CannotFindLastUser" 
} 

如果路徑\ 10.10.10.10 \ C $ \用戶不存在,它給出了一個錯誤

Get-ChildItem : Cannot find path '\\10.10.10.10\C$\Users' because it does not exist. 

如何瓚GE代碼,使得其嘗試連接到\ 10.10.10.10 \ C $ \文件和設置,否則它拋出一個用戶友好的消息

EDIT

這裏是整個腳本,其中參數是形式「發送器IP = 10.10.10.10'

$line_array = @() 
$multi_array = @() 
[hashtable]$my_hash = @{} 
$Sender_IP = $NULL 
$Win32OS = $NULL 
$Build = $NULL 
$folder = $NULL 
$SysDrv = $NULL 

foreach ($i in $args){ 
    $line_array+= $i.split(" ") 
} 

foreach ($j in $line_array){ 
    $multi_array += ,@($j.split("=")) 
} 

foreach ($k in $multi_array){ 
    $my_hash.add($k[0],$k[1]) 
} 


$Sender_IP = $my_hash.Get_Item("sender-ip") 

try{ 
    Test-Connection $Sender_IP -count 1 -ErrorAction Stop | out-null 
} 
catch [Exception] 
{ 
    $userId = "userId=CannotPing" 
    return $userId 
} 

try{ 
    $OS = (Get-WmiObject Win32_OperatingSystem -ComputerName $Sender_IP).Name 
} 
catch [Exception]{ 
    $userId = "userId=CannotConnectToWMI" 
    return $userId 
} 


$Win32OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Sender_IP 
$SysDrv = $Win32OS.SystemDrive 
$SysDrv = $SysDrv.Replace(":","$") 
$ProfDrv = "\\" + $Sender_IP + "\" + $SysDrv 
$ProfLoc = Join-Path -Path $ProfDrv -ChildPath "Users" 

try{ 
    $userId = Get-ChildItem $ProfLoc | ? { $_.PsIsContainer} | Sort LastWriteTime -Descending | Select -expand Name -First 1 
    $userId = "userId="+$userId 
    return $userId 
}catch [Exception] 
{ 
    $userId = "userId=CannotFindLastUser" 
    return $userId 
} 

回答

1

使用Test-Path小命令,以確定是否存在路徑和/或可用。

在測試路徑之前,您可能希望使用Test-Connection來ping服務器。

+0

我的腳本ping服務器,嘗試連接到WMI,如果這兩個步驟成功,那麼它會嘗試連接到路徑\\ 10.10.10.10 \ C $ \ Users – Glowie

+0

OK,然後使用Test-路徑「來確保它存在。 – alroc