有没有办法将字符串(特别是冒号)插入整数变量?

时间:2019-10-22 18:29:54

标签: powershell

我试图通过在Powershell中使用schtasks.exe从.ini文件中提取信息来创建自动创建计划任务的代码。但是starttime参数具有HH:mm格式。

它不接受字符串格式的时间(无效的开始时间值),并且:干扰将其转换为整数。

我将小时和分钟作为单独的变量提取(并将它们转换为整数),并尝试用:“连接”它们,这为我提供了变量引用和意外的令牌错误。

我从.ini中删除了时间,并删除了:,将其转换为整数,然后尝试了.insert(2,':')这给了我 “调用失败,int 32不包含名为insert的方法”

代码本身-

schtasks.exe /RU $username /RP $password  /CREATE /SC DAILY /TN 'My Task' /TR 'powershell.exe C:\mycode.ps1' /ST $time

从.ini-

提取时间的过程
$pull = Get-Content -Path 'C:\Info.ini' | Select -Skip 2 | ForEach-Object {$_ -replace '\D+(\d+)','$1'}

$inttime = [int]$pull

$time = $inttime.Insert(2,':')

从文件中提取整数后,我是否有办法获取整数之间的:?谢谢。

1 个答案:

答案 0 :(得分:1)

您当前正在尝试在Int32对象上使用String类中的Insert()方法。您需要将变量转换为字符串或将值转换为字符串才能使用该方法。

$time = ([string]$inttime).Insert(2,':')
# OR
$time = $inttime.ToString().Insert(2,':')

如果您要捕获的所有数字都是4位一组,则只需使用-replace运算符即可执行此插入操作。

$pull = Get-Content -Path 'C:\Info.ini' |
    Select-Object -Skip 2 |
        ForEach-Object { $_ -replace '\D+(\d{2})(\d{2})','$1:$2' }