Я использовал команду Invoke-выражение в PowerShell с этим кодом:Пользовательское выражение в Invoke-выражении PowerShell
$command="Get-ADUser -Properties $PropertiesSelected -filter $FilterSelected -SearchScope Subtree -SearchBase '$DomainSelected' -Server MyServer:3268|Select $PropertiesSelected,$DomainSelected"
Invoke-expression $command
первой вещь:
в $PropertiesSelected
, у меня есть атрибут LastLogonTimeStamp, как вы знаете, это значение непросто читать без специального выражения. Обычно я использовал это, чтобы преобразовать:
@{Name="LastLogonDate"; Expression={[system.DateTime]::FromFileTime($($_.lastLogonTimestamp))}}
Но если я пытаюсь добавить это в конце «выбрать» часть в моем сценарии это не работает:
UserExctractWithSelectedPropertiesandDomain.ps1
+ $command="Get-ADUser -Properties $PropertiesSelected -filter $FilterSelected -Se...
Unexpected token 'LastLogonDate"; Expression={[system.DateTime]::FromFileTime($($_.lastLogonTimestamp))}}"' in expression or statement.
Я думаю, что это вопрос синтаксиса но я не знаю, как я могу это решить.
Мой второй пункт о $DomainSelected
переменной.
Мой полный сценарий так:
Import-Csv c:\TempPowerShell\CheckBoxResults.csv -delimiter ";"|
ForEach-Object {
$PropertiesSelected=$_.PropertiesSelected
$FilterSelected=$_.FilterSelected
Import-Csv c:\TempPowerShell\CheckBoxResultsDomain.csv -Delimiter ";" |
ForEach-Object{
$DomainSelected=$_.DomainSelected
Write-Host "PropertiesSelected=$PropertiesSelected/FilterSelected=$FilterSelected/DomainSelected=$DomainSelected"
$command="Get-ADUser -Properties $PropertiesSelected -filter $FilterSelected -SearchScope Subtree -SearchBase '$DomainSelected' -Server D0004bel.bel.com:3268|Select $PropertiesSelected,$DomainSelected,@{Name="LastLogonDate"; Expression={[system.DateTime]::FromFileTime($($_.lastLogonTimestamp))}}"
Invoke-expression $command
}
}
содержание checkboxresults.csv файл этот тип данных:
PropertiesSelected;FilterSelected
GivenName,sn,TargetAddress,LastLogonTimeStamp ; *
содержание CheckBoxResultsDomain.csv файл выглядит так:
DomainSelected
"DC=World,DC=MyDomain,DC=COM"
"DC=pt,DC=MyDomain,DC=COM"
"DC=jp,DC=MyDomain,DC=COM"
Когда я выполняю свой сценарий, я хочу, чтобы домен был выбран для каждой строки, но у меня есть только на первой строке.
Как это исправить?
Invoke-Expression здесь не требуется - попробуйте избавиться от него. В общем, Invoke-Expression не так полезен и обычно просто затрудняет определение того, что не так. –
Спасибо за ответ, ведь $ propertiesSelected генерируется флажком, и если я не использовал выражение invok, оно не работает, потому что мои флажки экспортируют такое значение: – oakado
PropertiesSelected; FilterSelected GivenName, sn, TargetAddress, LastLogonTimeStamp; * – oakado