PowerShell-从/到替换输出文件_

PowerShell-从/到替换输出文件_,powershell,Powershell,我正在尝试使用PowerShell将多个实例中的所有作业导出到.txt文件 但是当我接触到名称上使用“/”的作业时,由于操作系统命名限制,无法创建文件 因此,我想导出这些作业,并将其名称中的“/”替换为“\。 这是我正在使用的查询 $Loop = Invoke-Sqlcmd -ServerInstance Source -Database DB -Query "SELECT DISTINCT [alias/host] as [SrcServer] FROM [DB].[dbo].[AllData

我正在尝试使用PowerShell将多个实例中的所有作业导出到.txt文件

但是当我接触到名称上使用“/”的作业时,由于操作系统命名限制,无法创建文件

因此,我想导出这些作业,并将其名称中的“/”替换为“\。 这是我正在使用的查询

$Loop = Invoke-Sqlcmd -ServerInstance Source -Database DB -Query "SELECT DISTINCT [alias/host] as [SrcServer] FROM [DB].[dbo].[AllDatabases];" 

foreach ($JobsExport in $Loop) {
    foreach ($i in $JobsExport.SrcServer)   {
        $SrvFolderName = ($JobsExport.SrcServer) -replace '\\','_'

        $dir = "C:\Temp\All_Jobs\"+ $SrvFolderName

        #Create the folders
        if(!(Test-Path -Path $dir )){
            New-Item -ItemType directory -Path $dir
            Write-Host "Folder Created"
        }
        else
        {
          Write-Host "Folder already exists - skipping"
        }

        $srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" ($JobsExport.SrcServer);
        $srv.JobServer.jobs|foreach-Object {$_.script() > "C:\Temp\All_Jobs\$SrvFolderName\$SrvFolderName-$_.txt" | % ($SrvFolderName-$_.txt) -replace '\\','_' -Verbose      }

    }
} 

我有点困惑,但可能只有我一个人。您有一个循环,其中迭代器是
$I
。我看不到在任何地方使用了它。您正在替换脚本中的\而不是
/
。只需对
/
使用相同的语法即可。它还包含
($JobsExport.SrcServer)
当它在循环中时,它可能应该是
$..SrcServer
。这有点奇怪。问题可能是它在文件名中使用了
$\ucode>而不是
$srvFolderName
。我想知道如何替换“/”从输出文件名开始。我注意到我创建了两个循环,并删除了一个循环;整个脚本按照我的预期运行,我需要知道如何替换输出文件中的“/”,请;您说您需要替换“/”,但我只看到您正在替换“\\”。无论输出文件名在哪个变量中,您都可以
$variable.replace(“/”,“\”)