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