Das Ausführen von Get-ChildItem auf dem UNC-Pfad funktioniert in Powershell, nicht jedoch in Powershell in einer Batch-Datei

Schreibe ich eine batch-Datei, führt ein Powershell-Skript an einer Stelle Schleifen Einzelteile mit UNC-Pfaden als Attribute und verwendet Get-ChildItem auf diesen Pfaden. In einer minimalen version, das ist das, was in meinen Skripten:

Master.bat

powershell -ExecutionPolicy ByPass -File "Slave.ps1"

Slave.ps1

$foo = @{Name = "Foo"}
$foo.Path = "\\remote-server\foothing"

$bar = @{Name = "Bar"}
$bar.Path = "\\remote-server\barthing"

@( $foo, $bar ) | ForEach-Object {
    $item = Get-ChildItem $_.Path
    # Do things with item
}

Das problem das ich laufen in ist, dass wenn ich Master.bates schlägt fehl Get-ChildItem mit einem Fehler entlang der Linien von

get-childitem : Cannot find path '\\remote-server\foothing' because it does not exist.

Aber es scheint zu funktionieren perfekt in Ordnung, wenn ich das Slave.ps1 - Datei direkt mit Powershell. Warum könnte das passiert nur, wenn die Master.bat - Datei ausgeführt wird?

Dinge, die ich versucht habe

  • Voranstellen, die UNC-Pfade mit FileSystem:: mit Anbietern http://powershell.org/wp/2014/02/20/powershell-gotcha-unc-paths-and-providers/
  • So sicherzustellen, dass es keine seltsame Zeichen in die tatsächlichen Pfade
  • Mit der -literalPath - parameter anstelle des einfachen -path parameter für Get-ChildItem
  • Läuft Get-ChildItem \\remote-server\foothing in der PowerShell und folgenden, überprüfen Sie die Verbindung zum remote-server

InformationsquelleAutor der Frage Jon Chan | 2014-05-09

Schreibe einen Kommentar