0

我一直在尝试通过使其更清洁来重新格式化此命令,但我似乎无法绕过写入输出。

Get-QARSOperation -ParentContainer 'somedomain.com/OU1/OU2' -TargetObjectType 'user' |
  Where-Object {$_.Status -eq 'Completed' -and $_.Controls.ID -eq 'OperationReason'} |
  ForEach-Object {Get-QARSApprovalTask -Operation $_.ID} |
  ForEach-Object {
    Write-OutPut ("Target: " + $_.Operation.TargetObjectInfo.DN.Replace("CN=","").Replace("cn=","").Replace("\","").Replace(",","").Replace("OU","").Split('=')[0]);
    Write-OutPut ("Operation ID: "+ $_.Operation.ID);
    Write-OutPut ("Approver: " + $_.CompletedBy.DN.Replace("CN=","").Replace("\","").Replace(",","").Replace("OU","").Split('=')[0]);
    Write-OutPut ("StartedOn: " + $_.Created);
    Write-OutPut ("Completed: " + $_.Completed);
    Write-OutPut ("Comments: " + $_.CompletionReason);
    Write-OutPut ("Operation Type: " + $_.Operation.Type);
    Write-OutPut "" 
  }

此外,我导出到 csv 时的格式不会将数据放入列中。你有什么建议可以让这个脚本看起来更整洁?

谢谢!

4

1 回答 1

1

正如评论中所建议的,正确的做法是使用Export-Csv生成 CSV 文件。至于创建一个要导出的对象并使其易于在代码中阅读,您可以执行与您所拥有的类似的操作,并使用它来创建一个自定义对象,然后将其通过管道传输到Export-Csv. 另外,我认为您的整体.Replace("CN=","").Replace("cn=","").Replace("\","").Replace(",","").Replace("OU","").Split('=')[0]可以简化为.Split('=,')[1]. 字符串的.Split()方法接受多个要拆分的字符,它将根据提供的任何字符进行拆分。这就是我的建议,你需要在最后更新路径,.Replace如果我的不适合你,你可能不得不恢复到更长的路径。

Get-QARSOperation -ParentContainer 'somedomain.com/OU1/OU2' -TargetObjectType 'user' |
    Where-Object {$_.Status -eq 'Completed' -and $_.Controls.ID -eq 'OperationReason'} |
    ForEach-Object {Get-QARSApprovalTask -Operation $_.ID} |
    ForEach-Object {
        [PSCustomObject][Ordered]@{
            "Target" = $_.Operation.TargetObjectInfo.DN.Split('=,')[1]
            "Operation ID" = $_.Operation.ID
            "Approver" = $_.CompletedBy.DN.Split('=,')[1]
            "StartedOn" = $_.Created
            "Completed" = $_.Completed
            "Comments" = $_.CompletionReason
            "Operation Type" = $_.Operation.Type
        }
    } |
    Export-Csv C:\Path\To\File.csv -NoTypeInformation

你可以使用一个Select声明,但我认为这对你来说看起来更干净。

于 2018-02-27T23:28:05.217 回答