0

PowerShell が \10.10.10.10\C$\Users に接続できない場合、\10.10.10.10\C$\Documents and Settings に接続しようとするように、powershell スクリプトを作成する方法を見つけようとしています。

これまでのところ、次のコードがあります

$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$\Users が存在しない場合、エラーが発生します

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

\10.10.10.10\C$\Documents and Settings への接続を試行するようにコードを変更する方法。それ以外の場合は、ユーザー フレンドリーなメッセージがスローされます。

編集

引数が「sender-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
}
4

1 に答える 1

1

コマンドレットを使用してTest-Path、パスが存在するかどうか、および/または使用可能かどうかを判断します。

Test-Connectionパスをテストする前に、サーバーに ping を実行したい場合があります。

于 2013-10-22T13:08:23.233 に答える