PowerShell:If 语句并在 Import-CSV 中使用空白单元格

标签 powershell csv scripting

我在 CSV 文件中使用带有空白单元格的 if 语句时遇到困难。我正在尝试编写一个入职脚本并让它从 xlsx HR 填写中提取信息(IT 将需要的行复制到脚本中使用的 CSV 中)。为了获得 OU 路径,我使用了部门名称。但是,有些用户有子部门,有些则没有,这些字段在 HR 发送的 xlsx 中留空。我通过在这些字段中输入 N/A 使其工作,但是如果其他技术不知道在 CSV 文件中执行此操作,脚本将失败。所以我想让它处理空白字段。

这就是我在 CSV 字段中不使用 N/A 时的尝试

foreach ($obj in $onboardcsv){

$dep = "$($obj.department)"
$sdep = "$($obj.subDepartment)"

if ($null -eq $obj.subDepartment){
        $ou = Get-ADOrganizationalUnit -Filter {name -like $dep} -SearchBase "OU=User,OU=OU,DC=DOMAIN,DC=com"
}

else{
        $ou = Get-ADOrganizationalUnit -Filter {name -like $sdep} -SearchBase "OU=User,OU=OU,DC=DOMAIN,DC=com"  
    }

如有任何帮助,我们将不胜感激!

最佳答案

要重新表述您的问题,您只想搜索 SubDepartment 不为空的地方?

在不修改太多代码的情况下,您可以使用 [string] 类中提供的静态方法 ::IsNullOrWhiteSpace() 来评估空虚:

  • 使用 -Not 反转 [string]::IsNullOrWhiteSpace($obj.subDepartment) 的结果。
foreach ($obj in $onboardcsv)
{
    $department = if (-not [string]::IsNullOrWhiteSpace($obj.subDepartment)) {
        $obj.subDepartment
    }
    else {
        $obj.department
    }
    Get-ADOrganizationalUnit -Filter "Name -like '$department'" -SearchBase "OU=User,OU=OU,DC=DOMAIN,DC=com" 
}

因此,首先针对子部门 进行测试,如果$obj.subDepartment 不是null,则将其分配给$department。这将允许对两个属性只使用一个变量,而无需复制代码。


感谢 @Santiago进行健全性检查。

关于PowerShell:If 语句并在 Import-CSV 中使用空白单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72064048/

相关文章:

powershell - 通过 GPO 的 Ansible Winrm HTTPS 监听器配置

r - 读取文件时指定行名称

Python - 加速度计以 1 kHz 速率读取和写入 CSV 文件

php - 使用 PHP 按姓氏对 CSV 文件进行排序

scripting - VBscript 输出写不正确

linux - bash 脚本昨天的 zip 文件

c - 如何将基于列表的文件复制到同样基于列表创建的相应文件夹中?

powershell - 使用 Powershell 如何获取工作日号码?

Powershell 读取文件,搜索 $$I 并替换,写入文件?

powershell - 如何在PowerShell中计算对象数量?