【问题标题】:Replace/update specific files on a fileshare替换/更新文件共享上的特定文件
【发布时间】:2013-03-18 05:09:26
【问题描述】:

我正在尝试搜索多个目录并替换 newfile.swf 的所有实例。

$Logfile = "C:\FOLDER\filecopy.log" 
$ServerDir = "\\SERVER\TESTING\DIRECTORY"
$SourceFile = "C:\FOLDER\newfile.swf"
$OldFiles = Get-ChildItem -path $ServerDir -Recurse -Include newfile.swf |
            Sort-Object Name | Format-Table Fullname -Auto

foreach ($O in $OldFiles) {
    if (Test-Path $O) {
        Copy-Item $SourceFile $O -force
    } else {
        Add-Content $logfile "File Copy Failed"
        Add-Content $logfile $error[$error.count-1]
        Add-Content $logfile "==================="
    }
}

错误如下所示。

File Copy Failed System.Management.Automation.ParseException:
Unexpected token 'C:\FOLDER\newfile.swf' in expression or statement.
at System.Management.Automation.Parser.PipelineRule()
at System.Management.Automation.Parser.StatementRule()
at System.Management.Automation.Parser.StatementListRule(Token start)
at System.Management.Automation.Parser.ScriptBlockRule(String name, Boolean requireBrace, Boolean isFilter, ParameterDeclarationNode parameterDeclaration, List`1 functionComments, List`1 parameterComments)
at System.Management.Automation.Parser.ParseScriptBlock(String input, Boolean interactiveInput)
at System.Management.Automation.AutomationEngine.ParseScriptBlock(String script, Boolean interactiveCommand)
at System.Management.Automation.ScriptCommandProcessor..ctor(String script, ExecutionContext context, Boolean isFilter, Boolean useLocalScope, Boolean interactiveCommand, CommandOrigin origin)
at System.Management.Automation.Runspaces.Command.CreateCommandProcessor(ExecutionContext executionContext, CommandFactory commandFactory, Boolean addToHistory)
at System.Management.Automation.Runspaces.LocalPipeline.CreatePipelineProcessor()
at System.Management.Automation.Runspaces.LocalPipeline.InvokeHelper()
at System.Management.Automation.Runspaces.LocalPipeline.InvokeThreadProc()
===================

【问题讨论】:

    标签: windows file powershell scripting powershell-2.0


    【解决方案1】:

    Format-Table 不生成文件对象列表,这是Copy-Item 期望的输入。试试这个:

    Get-ChildItem -Path $ServerDir -Recurse -Include newfile.swf | sort Name | % {
      if ( Test-Path -LiteralPath $_.FullName ) {
        Copy-Item $SourceFile $_.FullName -Force
      } else {
        Add-Content $logfile "File Copy Failed"
        Add-Content $logfile $error[$error.count-1]
        Add-Content $logfile "==================="
      }
    }
    

    【讨论】:

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