Rundeck + powershell 内联脚本问题

问题描述

我是 rundeck 的新手,我正在努力让它在我的环境中工作。

  • Rundeck 服务器在 Ubuntu 服务器上。
  • 远程节点是 Windows Server。

所有 winrm https / kerberos 部分都已完成并且似乎可以正常工作。

我使用内联脚本步骤完成了一项工作,该步骤将 AD 中的数据导出到 csv 文件中。

问题是 rundeck 在脚本中删除了 @caracter 因此它不起作用。

源定义:

Get-ADUser -SearchBase "OU=...,DC=com" -Filter {mail -like "*@xxxx.com"} | select @{Name="NOM";Expression={$_.Surname}},@{Name="PRENOM";Expression={$_.Givenname}},@{Name="SERVICE";Expression={$_.wWWHomePage}},@{Name="BATIMENT";Expression={$_.wWWHomePage}},@{Name="EMAIL";Expression={$_.UserPrincipalName}},@{Name="TELEPHONE";Expression={$_.wWWHomePage}} | sort Nom | ConvertTo-Csv -NoTypeinformation | % { $_ -replace '"',""} | Out-File "D:\Data\OUT\Export.csv"

在远程节点上:

Get-ADUser -SearchBase "OU=...,DC=com" -Filter {mail -like "*@xxxx.com"} | select {Name="PRENOM";Expression={$_.Givenname}},{Name="BATIMENT";Expression={$_.wWWHomePage}},{Name="TELEPHONE";Expression={$_.wWWHomePage}} | sort Nom | ConvertTo-Csv -NoTypeinformation | % { $_ -replace '"',""} | Out-File "D:\Data\OUT\Export.csv"

如何防止这种情况发生?

谢谢。

解决方法

查看文档,您需要使用 @@ 来转义 @。查看 this 并找到“Escaping Replacement Token”部分。