运行 aspnet_regiis 用于在第一个 failure/success 操作后存在循环中的加密

Running aspnet_regiis for encryption in loop exists after first failure/success operation

我正在编写一个 powershell 脚本,它读取一个 CSV,其中包含 Web.config/App.config 驻留应用程序的路径。脚本简单尝试加密配置文件。代码片段如下:

foreach ($config in $configs) {
  $rootPath = Get-Location
  $directory = Join-Path -Path $rootPath -ChildPath $config.GetPath()  

  if (Test-Path -Path $directory) {
     $configPath = Join-Path $directory -ChildPath $config.GetOriginalConfig()
     if (![System.IO.File]::Exists($configPath)) {
      Write-Host "$configPath was not found."
      return
    }
    # A set of helper codes

    Try {
      cd $directory
      # Invoke-Command $moveToDirectory
      aspnet_regiis -pef connectionStrings . -prov CustomProvider
    }
    Catch {
      Write-Host $$_.Exception.Message
    }
  }
}

这里的问题是我有 5 个配置路径,但只有第一个 运行s 并且应用程序存在。似乎 aspnet_regiis 在成功或失败的情况下都存在该程序。我该怎么做才能使其循环 运行?

好吧,通过一些打击和试验,我能够解决这个问题。由于 cd $directory 命令,循环停止到 运行。我的猜测是,由于问题是命令更改目录,因此脚本不在其当前范围内。我是新手所以这只是我的猜测。 于是我改了一行代码为:

aspnet_regiis -pef connectionStrings "$directory" -prov CustomProvider