2017-09-23 244 views
0

運行我需要運行單行PowerShell腳本像這樣的:多PowerShell命令需要從命令行

$a = Get-Content test.tmp; $b = [timespan]::fromseconds($a); "{0:HH:mm:ss,fff}" -f ([datetime]$b.Ticks) 

在命令行。當從powerhsell cli直接運行時,它工作正常。但嘗試運行時:

powershell "$a = Get-Content test.tmp; $b = [timespan]::fromseconds($a); "{0:HH:mm:ss,fff}" -f ([datetime]$b.Ticks)" 

從命令行cli我得到錯誤。我無法從腳本以.ps1文件的形式運行它,因爲我不允許更改有關運行PowerShell腳本的限制策略。

Anybodoy將能夠指出我必須改變從命令行正確運行它嗎?

非常感謝

+1

'powershell -Command「$ a = Get-Content test.tmp; $ b = [timespan] :: fromseconds($ a); \「{0:HH:mm:ss,fff} \」-f([datetime] $ b.Ticks)「' – PetSerAl

回答

0

有了適當的報價/括號,你不需要中間變量,只有一個命令:

'{0:HH:mm:ss,fff}' -f ([datetime]([timespan]::fromseconds((Get-Content test.tmp))).Ticks) 

在批處理:

powershell -C "'{0:HH:mm:ss,fff}' -f ([datetime]([timespan]::fromseconds((Get-Content test.tmp))).Ticks)" 

或獲得持續時間爲批次變量:

:: Q:\Test\2017\09\23\SO_46379453.cmd 
@Echo off 
For /f "tokens=1*" %%A in (
    'powershell -C "\"{0:HH:mm:ss,fff}\" -f ([datetime]([timespan]::fromseconds((Get-Content test.tmp))).Ticks)" ' 
) Do Set "Duration=%%A,%%B" 
set Duration