2014-01-21 2 views
0

Я использовал команду 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" 

Когда я выполняю свой сценарий, я хочу, чтобы домен был выбран для каждой строки, но у меня есть только на первой строке.

Как это исправить?

+0

Invoke-Expression здесь не требуется - попробуйте избавиться от него. В общем, Invoke-Expression не так полезен и обычно просто затрудняет определение того, что не так. –

+0

Спасибо за ответ, ведь $ propertiesSelected генерируется флажком, и если я не использовал выражение invok, оно не работает, потому что мои флажки экспортируют такое значение: – oakado

+0

PropertiesSelected; FilterSelected GivenName, sn, TargetAddress, LastLogonTimeStamp; * – oakado

ответ

0

Ошибка синтаксиса в вашем операторе выбора легко исправить, заменив " с ' в вашей вычисленной собственности:

@{Name='LastLogonDate'; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} 

Я не уверен, что вы подразумеваете под вторым вопросом, хотя, все равно разработать?

+0

привет, спасибо за ответ. Он не работает, больше не синтаксическая ошибка, а следующая сообщение: – oakado

+0

для информации, связанной с этим сообщением: http://stackoverflow.com/questions/21019742/powerhsell-multiple-value-in-properties-variable/21020583?noredirect=1#21020583 – oakado

Смежные вопросы