PowerShell:If 语句并在 Import-CSV 中使用空白单元格
PowerShell: If statements and using blank cells in Import-CSV
我在 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]
class中提供的::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 进行完整性检查。
像这样的东西会起作用。
$ou = "searching by sub department"
$department = if (!($user.subDepartment)) {
#subdepartment is blank
#searching by department
$ou = "searching by department"
}
$ou
我在 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]
class中提供的::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 进行完整性检查。
像这样的东西会起作用。
$ou = "searching by sub department"
$department = if (!($user.subDepartment)) {
#subdepartment is blank
#searching by department
$ou = "searching by department"
}
$ou