脚本有效,但我不知道如何扩展 PSCustomObject
Script works, but I cant figure out how to expand PSCustomObject
$computers = get-content
"C:\Users\Administrator\Desktop\DAVID\TimeSyncFinal\CheckTime\allips.txt"
foreach ($strComputer in $computers) {
$TextOutput = net time \$strComputer
$ip,$time,$time1 = ($TextOutput -split ' ')[3,6,7]
[PSCustomObject] @{
IP = $ip -replace ".*\"
Time = $time+$time1
}
}
Output
我附上了我的输出图片以供参考。
我想做的事情:
展开 IP,使其显示整个 IP 地址。
最长的字符串是 172.32.5.111
但它一直在以下位置中断:172.32.5 ......这也是输出的样子。
我已经尝试使用 PSCustomObject -expand 属性 但老实说,今天是我第一次使用对象。
我在 C:\Users\Administrator\Desktop\DAVID\TimeSyncFinal\CheckTime\allips.txt
中也有一个 ip 列表
在每一行列出一个 ip 地址($srtComputer 是 ip 列表的变量,我尝试将它作为 PSCustomObject 的占位符,但没有帮助。)
-replace是去掉net time命令输出中添加的\ \(可能你不能扩展net time输出?)
继续我的评论。您的基本代码按设计工作:
如果您的文件只有一个 IPA,那么...
Clear-Host
$computers = '127.0.0.1'
foreach ($strComputer in $computers)
{
$TextOutput = net time \$strComputer
$ip, $time, $time1 = ($TextOutput -split ' ')[3,6,7]
[PSCustomObject] @{
IP = $ip -replace ".*\"
Time = $time + $time1
}
}
# Results
<#
IP Time
-- ----
127.0.0.1 5:31:37PM
#>
或者这样,使用 -replace 和 split(如果混合中还有其他东西)……
Clear-Host
$computers = '127.0.0.1', '172.25.83.95'
foreach ($strComputer in $computers)
{
$TextOutput = (net time \$strComputer) -Replace '.*\\' -split ' is '
[PSCustomObject] @{
IP = $TextOutput[0]
Time = $TextOutput[1]
}
}
或使用 RegEx(如果混合中还有其他内容)...
Clear-Host
$computers = '127.0.0.1'
foreach ($strComputer in $computers)
{
$TextOutput = net time \$strComputer
[PSCustomObject] @{
IP = [regex]::Matches($TextOutput, '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}').Value
Time = [regex]::Matches($TextOutput, '(\d+)\/(\d+)\/(\d+).(\d+):(\d+):(\d+).[A|P]M').Value
}
}
我做了什么来修复它:
REPLACE GET-CONTENT WITH IMPORT-CSV
$strComputer with $ip
$computers to $computers.IP
And add an IP header to .csv file ip address list
* i wanted to edit my original as little as possible
$computers = get-content
"C:\Users\Administrator\Desktop\DAVID\TimeSyncFinal\CheckTime\allips.txt"
foreach ($strComputer in $computers) {
$TextOutput = net time \$strComputer
$ip,$time,$time1 = ($TextOutput -split ' ')[3,6,7]
[PSCustomObject] @{
IP = $ip -replace ".*\"
Time = $time+$time1
}
}
Output
我附上了我的输出图片以供参考。
我想做的事情: 展开 IP,使其显示整个 IP 地址。 最长的字符串是 172.32.5.111 但它一直在以下位置中断:172.32.5 ......这也是输出的样子。
我已经尝试使用 PSCustomObject -expand 属性 但老实说,今天是我第一次使用对象。 我在 C:\Users\Administrator\Desktop\DAVID\TimeSyncFinal\CheckTime\allips.txt
中也有一个 ip 列表在每一行列出一个 ip 地址($srtComputer 是 ip 列表的变量,我尝试将它作为 PSCustomObject 的占位符,但没有帮助。)
-replace是去掉net time命令输出中添加的\ \(可能你不能扩展net time输出?)
继续我的评论。您的基本代码按设计工作:
如果您的文件只有一个 IPA,那么...
Clear-Host
$computers = '127.0.0.1'
foreach ($strComputer in $computers)
{
$TextOutput = net time \$strComputer
$ip, $time, $time1 = ($TextOutput -split ' ')[3,6,7]
[PSCustomObject] @{
IP = $ip -replace ".*\"
Time = $time + $time1
}
}
# Results
<#
IP Time
-- ----
127.0.0.1 5:31:37PM
#>
或者这样,使用 -replace 和 split(如果混合中还有其他东西)……
Clear-Host
$computers = '127.0.0.1', '172.25.83.95'
foreach ($strComputer in $computers)
{
$TextOutput = (net time \$strComputer) -Replace '.*\\' -split ' is '
[PSCustomObject] @{
IP = $TextOutput[0]
Time = $TextOutput[1]
}
}
或使用 RegEx(如果混合中还有其他内容)...
Clear-Host
$computers = '127.0.0.1'
foreach ($strComputer in $computers)
{
$TextOutput = net time \$strComputer
[PSCustomObject] @{
IP = [regex]::Matches($TextOutput, '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}').Value
Time = [regex]::Matches($TextOutput, '(\d+)\/(\d+)\/(\d+).(\d+):(\d+):(\d+).[A|P]M').Value
}
}
我做了什么来修复它:
REPLACE GET-CONTENT WITH IMPORT-CSV
$strComputer with $ip
$computers to $computers.IP
And add an IP header to .csv file ip address list
* i wanted to edit my original as little as possible