ile başlatıyor Bir toplu iş dosyasından birkaç komut satırı powershell.exe olarak -command parametresine geçmek istiyorum. Böyle ÖrneğinToplu iş istasyonu PowerShell'i çok satırlı bir komut parametresi
, kod:
SET LONG_COMMAND=
if ($true)
{
Write-Host "Result is True"
}
else
{
Write-Host "Result is False"
}
START Powershell -noexit -command "%LONG_COMMAND%"
Bir PowerShell komut dosyası oluşturmadan bunu yapmak istiyorum, sadece bir toplu iş dosyası.
Mümkün mü?
Teşekkürler. powershell /?
# To use the -EncodedCommand parameter: $command = 'dir "c:\program files" ' $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -encodedCommand $encodedCommand
Aksi takdirde basit bir Base64 kodlu dize sağlayarak -EncodedCommand
yoluyla kaçan garip gerektirecek bir komutu kullanabilirsiniz gelen aktaran
Bence ikinci örneğiniz tam olarak aradığım şey. Bir toplu iş dosyasında; @ 'ın önemi nedir? Teşekkürler. – mcu
'@' cmd'ye yürütürken satırı yankılamamasını söyler. '' 'Sadece bir parametre sınırlayıcısıdır; ',' veya '=' de kullanılabilir. Dosyadaki başka bir şeyin filtrelenen dizeyle eşleşmesi olasılığını azaltır. Hat, '@' ve ';', '=' veya ',' herhangi bir kombinasyonu ile başlayabilir. Örnekler: ';; @', '@,', '== @ ,;' vb. – Rynant
Bu harika çalışıyor. Sadece bir tane MINOR dezavantajı var. Powershell'i bu şekilde başlatarak, iki işlemi çalıştırıyorum: powershell.exe ve cmd.exe. Ayrıca, pencerede hiçbir powershell istemi yoktur. powershell.exe "başlatılıyor" ve cmd.exe aracından çıkmak mümkün mü? – mcu