简体   繁体   中英

How can I Start-Process powershell.exe with some string splitter?

I want to start powershell.exe with a scriptblock like this (it's working fine):

Start-Process powershell.exe {
  Get-Help 
  Get-Process
}

But this script doesn't work:

Start-Process powershell.exe {
  $string = "123xAbcxEFG"
  $split1,$split2,$split3 = $string.Split("x")
  Write-Output $split1
  Write-Output $split2
  Write-Output $split3
  sleep 10
}

I think I need Add-Type -AssemblyName "SomeNameSpace" , but how can I find that namespace? Any intellisense or something like this?

The problem is with the quotes. It works, if you eg put additional single quotes around your double quotes. It also works with triple double quotes.

Start-Process powershell.exe  {
$string = """123xAbcxEFG"""
$split1,$split2,$split3 = $string.split("""x""")
Write-Output $split1
Write-Output $split2
Write-Output $split3
sleep 10
}

How I changed your code to catch the error (without the additional double quotes):

$ScriptBlock = {
  $string = "123xAbcxEFG"
  $split1,$split2,$split3 = $string.split("x")
  Write-Output $split1
  Write-Output $split2
  Write-Output $split3
  sleep 10
}

Start-Process powershell -argumentlist "-noexit -command $ScriptBlock"

you can use start-job it's actually start new powershell process . and you can do is easy. like this :

start-job 

for more help use :

get-help start-job

you can use start-job it's actually start new powershell process . and you can do is easy. like this :

$script= {get-help "dir"}
start-job -scriptblock $script

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM