3

PowerShell を使用して、コンピューターでポートが開いているかどうかを確認します。8 台の Windows 2008 R2 マシンを取得し、次のスクリプトを実行します。

$localhost = get-content env:computername

foreach($port in get-content "\\computer1\txtfiles\ports.txt")
{

foreach ($hostname in get-content "\\compiuter1\txtfiles\servers.txt")
    {
    try {
        $sock = new-object System.Net.Sockets.Socket -ArgumentList $([System.Net.Sockets.AddressFamily]::InterNetwork),$([System.Net.Sockets.SocketType]::Stream),$([System.Net.Sockets.ProtocolType]::Tcp)
    $sock.Connect($hostname,$Port)
    $output = $localhost+","+$hostname+","+$port+","+$sock.Connected
    $output
    $sock.Close()
}
catch {

    $output = $localhost+","+$hostname+","+$port+","+$sock.Connected
    $output

}
}

}

そして、次を使用して、computer1 から 8 台のコンピューターでこのスクリプトを実行します。

Invoke-Command -ComputerName computer1,computer2 -FilePath F:\scripts\port-test.ps1

最初のコンピューター (computer1- スクリプトを実行するマシン) では出力が得られましたが、computer2 では次のようになりました。

Cannot find path '\\computer1\txtfiles' because it does not exist. 

    + CategoryInfo          : ObjectNotFound: (\\computer1\txt
   files:String) [Set-Location], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

Powershell がネットワーク共有を認識しないのはなぜですか? どうすれば修正できますか?

4

3 に答える 3

5

ダブルホップの問題のように聞こえます-http ://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx-基本的に、1台のマシンにリモート接続してから、別のマシンにアクセスします。元のマシンと宛先の間にマシンがあるため、kerberos トークンは無効と見なされます。

使用している OS (ソースと宛先の OS は CredSSP に関連しています)? それが Windows 2008 または Windows 7 であり、問​​題がダブル ホップである場合は、CredSSP を使用して回避できる可能性があります - http://www.ravichaganti.com/blog/?p=1230

于 2011-08-15T09:18:58.477 に答える
4

アクセス制御に問題がない場合は、次のエラーでサーバーを介してファイルをコピーするときに直面した同様の問題を検討してください。

存在しないため、パス '\\computer1\d$\path' が見つかりません。

ファイル名の前に追加した後 に機能します:Microsoft.PowerShell.Core\FileSystem::

copy-item "Microsoft.PowerShell.Core\FileSystem::\\computer1\d$\path\installer.msi" "Microsoft.PowerShell.Core\FileSystem::\\computer2\d$\path\installer.msi"
于 2016-11-14T09:56:32.260 に答える
1

編集:

これを再現できましたが、ダブルホップの問題である可能性があります。ここの指示に従って解決しました:

http://blogs.msdn.com/b/clustering/archive/2009/06/25/9803001.aspx

(またはマットが提供したリンク)


computer2 と他のコンピューターがその共有を認識できることを確認してください。そもそも他のマシンが共有を認識できない場合、Powershell は何もできません。

簡単なチェックを行うには、次のようにします。

Invoke-Command -computer computer2 -script {dir \\computer1\txtfiles}
于 2011-08-15T04:27:11.460 に答える