Есть ли способ вставить строку (в частности, двоеточие) в целочисленную переменную? - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь создать код, который автоматизирует создание запланированной задачи, извлекая информацию из INI-файла, используя schtasks.exe в powershell. Однако параметр starttime имеет формат ЧЧ: мм.

Он не принимает время в строковом формате (недопустимое значение времени начала) и: мешает преобразовать его в целое число.

Я извлек часы и минуты как отдельные переменные (и преобразовалк целым числам) и попытался «соединить» их с:, который дает мне ссылку на переменную и неожиданные ошибки токена.

Я вытащил время из .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 Ответ

1 голос
/ 22 октября 2019

В настоящее время вы пытаетесь использовать метод Insert() из класса String для объекта Int32. Вам нужно будет преобразовать переменную как строку или преобразовать значение в строку, чтобы использовать метод.

$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' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...