0
function UpdateCSV
{
param(
[Parameter(Mandatory=$true)]$path,
[Parameter(Mandatory=$true)]$Row,
[Parameter(Mandatory=$true)]$exportpath,
[Parameter(Mandatory=$true)]$Delimiter
)
try{$csv = import-csv "$path" -Delimiter $Delimiter | Select-Object *,@{ Name= 'Department' ; Expression= {'Unkown'} },
@{ Name='Office' ; Expression= {'Unkown'} },
@{ Name= 'ADStatus' ; Expression= {'Unkown'} }
}
catch{break}
$result = foreach($user in $csv){
$userrow = $user.$row
write-host "$userrow"
$Username = $userrow.trim()
$ADUser = get-aduser -Filter {name -like $Username -or CN -like $Username -or sAMAccountType -like $Username} -Properties * -ErrorAction SilentlyContinue
if(!$ADUser){
$user.Department = "No ADUser"
$user.Office = "No ADUser"
$user.ADStatus = "No ADUser"
}
else{
$user.$row = $Username
if($ADUser.department -gt $null){$user.Department = $ADUser.department}
else{$user.Department = "Empty"}
if($ADUser.office -gt $null){$user.office = $ADUser.office}
else{$user.Office = "Empty"}
$user.ADStatus = $ADUser.enabled
}
$user
}
$result | export-csv "$exportpath" -Delimiter ";" -ErrorAction Stop
}
我所试图做的是让一个参数引用在那里我的用户名的行的名字,但是当我的用户"$user.$row"
它不工作,在write-host
部分写入了整列,而不只是行我$row
如何使用一个变量来调用行的名称在导入的CSV
指定但是,如果我不是硬编码$userrow = "$user.example"
它直接与在write-host
部分只写出来的那个值,而不是所有的列
所以问题是我如何调用一个行,我有一个变量的名称。
这是第一次写东西会被别人比我可以使用,所以请别指出,如果有一些明显的misstakes
不知道我遵循此处,在try块代码正在按excpted。 我很努力在foreach循环中调用$ user。$ row。这是因为我无法预测$行的名称,因为它会与我们审计的每个系统不同 – Jakodns
在您的try块中,可以使用需要匹配名称的表达式。如果您添加名称='用户';表达式= {$ _。columnnameforuser}到你的散列表,你的用户标题将永远是相同的。 当您的CSV更改时,您需要更新哈希表及其表达式以收集正确的数据。之后的一切应该能够保持不变。例如$ userrow = $ user.user等 –
我添加的列正在作为例外,我可以作为例外调用它们。这是我要求用户在我无法调用的$ row变量中命名的列。 我添加的三行我没有任何问题,我有一个问题的行是已经在CSV中,因为我不知道名称,因此我需要用户$ user。$ row 。如果我误解了你,你能否展示一下它的工作原理? – Jakodns