【问题标题】:Powershell - copy file from various locations with different domain credentialsPowershell - 从具有不同域凭据的不同位置复制文件
【发布时间】:2015-03-30 13:37:40
【问题描述】:

我正在寻找一种 powershell 解决方案,以将给定的 filename.txt 从具有不同域登录凭据的多个服务器 unc 路径复制到给定文件夹 - 以及根据名称列表(或大小写/ if-stmt) 并将每个服务器路径的子文件夹名称导出到 csv,其中服务器和文件名作为列。

以下是我用于一个服务器的代码 - 我只是添加了一些服务器和文件名。

你能帮我完成这项工作吗?

我使用 Powershell 版本 4。

例子:

$serverNames = @(
    "\\serverA\folderA";
    "\\serverB\folderA";
    "\\serverC\folderA";
)
$fileNames = @(
    "fileServerA";
    "fileServerB";
    "fileServerC";
)

foreach ($element in $serverNames) {
Try {

 If (Test-Path Q:){
 Remove-PSDrive -Name "Q" -Force

 # two server paths are in a different domain, 
 # so I need a case or if-stmt to pass login credentials
 New-PSDrive -Name "Q" -PSProvider FileSystem -Root $element -Credential
}
else{
  New-PSDrive -Name "Q" -PSProvider FileSystem -Root $element -Credential
    }

    #copy filename.txt (always the same name)
    robocopy $element\SubFolder\ C:\temp\ filename.txt /R:2 /W:3 /XO 

    #rename filename.txt according to fileName
    Move-Item C:\temp\filename.txt C:\temp\$name.xml -Force

    #scan dir and write foldernames (only "first" child folders) to .txt file with the according serverName AND fileName as columns
    dir -Directory \\serverA\folderA | Select-Object -ExpandProperty Name

   }
}

【问题讨论】:

    标签: powershell foreach


    【解决方案1】:

    如果您构建一个包含所有这些细节的对象数组会怎样?然后你可以用他们自己的凭据单独循环每个人。

    $servers = @()
    $servers += [pscustomobject]@{
        name = "\\serverA\folderA"
        files = "fileServerA"
        creds = Get-Credential
    }
    $servers += [pscustomobject]@{
        name = "\\serverB\folderA"
        files = "fileServerB"
        creds = Get-Credential
    }
    $servers += [pscustomobject]@{
        name = "\\serverC\folderA"
        files = "fileServerC"
        creds = Get-Credential
    }
    
    $servers | ForEach-Object{
        #.... Stuff here
    }
    

    如果服务器共享凭证,那么您可以在所示声明之外声明凭证集以多次使用它们。在循环内部,您现在可以调用New-PSDrive 并使用参数-Credential $_.creds

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2010-10-17
      • 1970-01-01
      相关资源
      最近更新 更多