我在PowerShell中使用了以下代码中的Invoke-expression命令:
$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))}}
但如果我尝试在我的脚本中“select”部分的末尾添加它,它就不起作用了:
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 :(得分:0)
通过将"
替换为计算属性中的'
,可以轻松修复select语句中的语法错误:
@{Name='LastLogonDate'; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}}
我不确定你的第二个问题是什么意思,但要注意详细说明吗?