2016-10-19 1 views
1

Anforderung: Ich versuche, den Ordner BKP in 10 Server mit dem folgenden Code zu erstellen, aber einige, wie es den neuen Ordner in Servern nicht erstellt.Wie erstellt man Ordner dynamisch mit PowerShell?

foreach ($instance in Get-Content "C:\servers\List.txt") 
{ 
    $local = Get-Location; 
    $final_local = "C:\BKP"; 

    if (!$local.Equals("C:\")) 
    { 
     cd "C:\"; 
     if ((Test-Path $final_local) -eq 0) 
     { 
      mkdir $final_local; 
      cd $final_local; 
     } 

     ## if path already exists 
     ## DB Connect 
    } 
} 
+0

mkdir für neue Ordner erstellen? – saftargholi

+0

Hallo Arashzag, danke für die Antwort, schon habe ich mkdir in meinem Code.können Sie versuchen, den Code zu teilen, der mir helfen kann. – Franklin

+0

Möchten Sie einen neuen Ordner mit $ final_local Pfad erstellen? – saftargholi

Antwort

2

Erste: Sie den falschen Test verwenden, sollten Sie verwenden:

if($local.Path -eq "C:\") 

Die gleiche Methode gibt es Objekte zu vergleichen einen Blick zu haben:

$local | get-member 
$local | fl * 

Vorsicht, PowerShell CmdLet return objects.

Sekunde: Wenn $local.Path gleich "C:\" ist, erstellen Sie nichts.


Ihr Code würde wie folgt aussehen:

ForEach ($instance in $(Get-Content "C:\servers\List.txt")) 
{ 
    $local = Get-Location; 
    $final_local = "C:\BKP"; 

    if($local.Path -ne "C:\") 
    { 
    cd "C:\"; 
    if((Test-Path $final_local) -eq 0) 
    { 
     mkdir $final_local; 
     cd $final_local; 
    } 

    ## if path already exists 
    ## DB Connect 
} 
+0

Sein Erstellungsordner in Local anstelle von Remote-Servern in der c: \ server \ list.txt – Franklin

+0

Ihr Test ist nicht der gute '.Equals' nicht tun, was Sie erwarten. – JPBlanc

+0

Danke JPBlanc für Ihre Antwort. Ich habe es nicht verstanden. Bitte ändere meinen Code. – Franklin

0

Verwendung dieser Befehl Verzeichnis zu erstellen:

ForEach ($instance in Get-Content "C:\servers\List.txt") 

{ 
$local = Get-Location; 
$final_local = "C:\BKP"; 

if(!$local.Equals("C:\")) 
{ 
    cd "C:\"; 
    if((Test-Path $final_local) -eq 0) 
    { 
     New-Item -ItemType Directory -Force -Path "$final_local"; 
     cd $final_local; 

    } 

    ## if path already exists 
    ## DB Connect 

} 

} 
+0

Ich habe keinen Unterschied für das Skript, das ich gepostet habe, und den obigen Code gefunden. – Franklin

+0

immer noch kann ich sehen, dass der Ordner in nur lokal erstellt wird – Franklin

+0

Kann mir jemand helfen zu diesem Thema – Franklin

0

Versuchen Sie, die invoke-Befehl i Credentials gehe davon aus für die Server nötig sind, um Sie kann es überspringen, wenn es für Sie funktioniert.

 
$credentials = Get-Credential 

$create = { $local = Get-Location; 
      $final_local = "C:\BKP" 

      if(!$local.Equals("C:\")){ 
       cd "C:\"; 
       if((Test-Path $final_local) -eq 0){ 
         New-Item -ItemType Directory -Force -Path "$final_local"; 
         cd $final_local; 
       } 
     ## if path already exists 
      ## DB Connect 
    } 
} 
ForEach ($instance in Get-Content "C:\servers\List.txt") { 
Invoke-Command -ScriptBlock $create -ComputerName $instance -Credential $credentials 
} 
+0

Thansk Ashu für Ihre Hilfe, aber leider funktioniert es nicht.Ich meine es auf lokalen Laufwerk nur erstellen. – Franklin

Verwandte Themen