我试图通过在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,':')
从文件中提取整数后,我是否有办法获取整数之间的:?谢谢。
答案 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' }