如何使用PowerShell动态创建文件夹?

时间:2016-10-19 05:50:40

标签: powershell

要求:我正在尝试使用以下代码在10服务器中创建BKP文件夹,但有些人不知道如何在服务器中创建新文件夹。

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
    }
}

3 个答案:

答案 0 :(得分:2)

首先:您使用的是错误的测试,您应该使用:

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

使用相等的方法比较对象看看:

$local | get-member
$local | fl *

小心PowerShell CmdLet返回对象

第二次:如果$local.Path等于"C:\",则不会创建任何内容。

您的代码如下:

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
}

答案 1 :(得分:0)

使用此命令创建目录:

{{1}}

答案 2 :(得分:0)

尝试使用invoke-command我假设服务器需要凭据,如果适合你,可以跳过它。

$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
}