problem using psexec with diskpart remotely

by willbs at 2013-03-18 11:15:31

whe i run this code with the literal values for the remote machine name, username and password, it works fine

psexec \192.xxx.xxx.xxx -u Username -p Password cmd /c 'echo . | diskpart /s “D:\serverfolders\documents\MSR-EFItest.txt” > “D:\serverfolders\documents\MSR-EFIlog.txt”'

if i run the same code using global variables, it gets stuck, as if i have the incorrect remote machine name, username, or password

psexec \$global:uutName -u $global:usernamer -p $global:password cmd /c 'echo . | diskpart /s “D:\serverfolders\documents\MSR-EFItest.txt” > “D:\serverfolders\documents\MSR-EFIlog.txt”'

or this too with quotes

psexec \"$global:uutName" -u “$global:usernamer” -p “$global:password” cmd /c 'echo . | diskpart /s “D:\serverfolders\documents\MSR-EFItest.txt” > “D:\serverfolders\documents\MSR-EFIlog.txt”'

any suggestions to get it to work?
by poshoholic at 2013-03-19 11:57:05
Have you tried pushing the double backslash inside of your uutName variable? That would be my first guess as to why it isn’t working with variables.
by willbs at 2013-03-19 14:41:21
that was a good guess but it didn’t work
thanks
by poshoholic at 2013-03-20 05:38:01
Ok, here’s another way you could do it: try using splatting instead to push the arguments into psexec, like this:
$psexecArguments = @(
$global:uutName
‘-u’
$global:usernamer
‘-p’
$global:password
‘cmd’
‘/c’
‘echo . | diskpart /s “D:\serverfolders\documents\MSREFItest.txt” > “D:\serverfolders\documents\MSR-EFIlog.txt”’
)
psexec @psexecArguments

You should also verify the contents of the array by outputting it to the console to make sure the arguments are what you think they should be as a part of testing this. If that fails then I can run some tests locally (don’t have psexec installed right now, which is why I’m just putting out suggestions).
by willbs at 2013-03-20 09:02:51
hey poshoholic, you got me thinking about pushing the backslashes when it didn’t work
so what i did was remove them from the contents of the global variables and rewrote the command like this

psexec \$global:uutName -u $global:DiskPartusername -p $global:password cmd /c 'echo . | diskpart /s “D:\serverfolders\documents\MSR-EFItest.txt” > “D:\serverfolders\documents\MSR-EFIlog.txt”'

and it works fine

thanks for the idea
by poshoholic at 2013-03-20 12:12:26
Excellent, glad you were able to work it out.