powershell - 在powershell中向数组添加逻辑
问题描述
我已经导入了一个 CSV 文件并从数据中创建了一个数组。我需要拆分使用拆分的域名,但是其中一些名称是 IP 地址,因此也拆分了这些名称。
如何添加一些逻辑来进行正常拆分?但如果它是 IP 地址之类的数字,请忽略并打印它。
下面是我的示例数据,“客户名称”是我正在尝试使用的。
$NewCSV = $a | ForEach-Object {
$Record = @{
'Client Name' = $_."Name".Split('.')[0]
'Policy Name' = $_."AgentServerType"
'Backup State' = $_."BackupStatus"
'logon' = $_."LogonAccountTestStatus"
'account' = $_."LogonAccount"
}
New-Object PSObject -Prop $Record
} | Select "Client Name","Policy Name","Backup State","logon","account"
解决方案
您可以使用该IPAddress.TryParse
方法来确定 a 是否String
代表 IP 地址...
$Record = @{
'Client Name' = if ([IPAddress]::TryParse($_.Name, [Ref] $null)) {
$_.Name
} else {
$_.Name.Split('.')[0]
}
# ...
}
IPAddress
该类存在一个类型加速器,因此我们也不需要指定命名空间(即[System.Net.IPAddress]
)。如果成功,第二个参数TryParse
用于返回IPAddress
从第一个参数解析的实例。我们不需要这个IPAddress
实例,所以我们只是通过$null
。
此外,这只是一个风格说明,您不需要并且不典型地用引号将属性名称(例如$_."AgentServerType"
)括起来,除非属性名称包含空格。
推荐阅读
- thymeleaf - 如何强制 Thymeleaf 显示具有空值的属性?
- c++ - CString::Mid() 是否有等效的 std::string?
- php - 使用 PHP 和 jQuery 的 Bootstrap 3 开放模式
- postgresql - 在 docker 的 pgadmin 中添加新的 postgres 服务器
- angular - Angular:自动进行版权检查
- java - AsyncTask 在哪里使用和在哪里不使用?
- core-data - 如果在 ItemView 中更新,则无法刷新 UI
- ruby-on-rails - 如何弄清楚如何修复资产:预编译错误
- amazon-web-services - jupyter notebook - 从命令行运行笔记本(并开始运行单元)并从浏览器访问它
- android - 如何观察基于用户提交按钮的 API 调用,同时从提交操作所必需的编辑文本中获取值?