Запуск процесса вызывает ошибку при предоставлении учетных данных - возможная ошибка - PullRequest
13 голосов
/ 06 сентября 2011

Возможно, вы знаете, почему возникает эта ошибка в ответ на приведенный ниже код.Имя пользователя и пароль были подтверждены как правильные.

$secPassword = ConvertTo-SecureString "Password" -AsPlaintext -Force 
$farmCredential = New-Object System.Management.Automation.PsCredential "SharePoint\SP_Farm",$secPassword

Start-Process $PSHOME\powershell.exe -Credential $FarmCredential -ArgumentList "-NoExit","-Command `"&{`$outvar1 = 4+4; `"write-output `"Hello:`"`$outvar1`"}`"" -Wait

ошибка;

Start-Process : This command cannot be executed due to the error: The directory name is invalid.
At C:\Users\Administrator.SHAREPOINT\AppData\Local\Temp\fb2956d7-87fc-4235-9f3c-742698cafe9f.ps1:8 char:14
+ Start-Process <<<<  $PSHOME\powershell.exe -Credential $FarmCredential -ArgumentList "-NoExit","-Command `"&{`$outvar1 = 4+4; `"write-output 
`"Hello:`"`$outvar1`"}`"" -Wait
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

однако, это работает просто отлично.

Start-Process $PSHOME\powershell.exe -ArgumentList "-NoExit","-Command `"&{`$outvar1 = 4+4; `"write-output `"Hello:`"`$outvar1`"}`"" -Wait

ПРИМЕЧАНИЕ: это при выполнении из PowerGUI или ISE ide. Файл fb2956d7-87fc-4235-9f3c-742698cafe9f.ps1 действительно существует в месте пути, поэтому по какой-то причинеимеющие трудности с этим.Тем не менее, он работает, когда запускается непосредственно в командной строке / shell Power Shell.Я вошел в систему с учетной записью локального компьютера, которая работает как локальный администратор, сценарий направляет выполнение к учетной записи домена, которая не имеет прав администратора и будет запускаться только с разрешениями пользователя.

Является ли это ошибкой, поскольку IDE как разработчик не должен запускаться из-за этого, так как он работает, когда я запускаю блок в окне командной строки powershell ??

Ответы [ 6 ]

10 голосов
/ 06 июня 2014

У меня такая же ошибка.

Эта функция работает с Powershell ISE, но не работает с PowerGUI

Start-Process -FilePath "C:\WINDOWS\System32\cmd.exe" -Credential $credential -ArgumentList ("/c $sFileExecutable")

Работает с параметром WorkingDirectory

Start-Process -FilePath 'cmd.exe' -Credential $credential -ArgumentList ("/c $sFileExecutable") -WorkingDirectory 'C:\Windows\System32'
5 голосов
/ 06 сентября 2011

Это странно, но я воссоздал ошибку, и это исправило ее ...

http://support.microsoft.com/kb/832434

В основном, измените начальный каталог для Powershell_ISE (или PowerGUI!)к общесистемному значению.

4 голосов
/ 21 ноября 2016

Я знаю, что уже поздно, но ветка помогла мне (в частности, предложение от @ Dionysoos ), и надеюсь, что мой ответ может помочь другим.

У меня была такая же ошибка ...

Start-Process : This command cannot be executed due to the error: The directory name is invalid.

... при запуске сценария без присмотра, когда он работал в ISE.

Автоматический сценарий использовал пользовательский $env:TEMP в качестве рабочего каталога, что означало, что новый процесс не имел к нему доступа. Задание -WorkingDirectory $env:windir в команде Start-Process решило проблему.

3 голосов
/ 11 февраля 2017

Лучшее объяснение проблемы находится в комментариях Натана Хартли , поэтому позвольте мне подвести итог здесь:

Проблема исключительно связана с разрешениями файловой системы и не имеет ничего общего с хост-средой (консоль против ISE):

  • Когда вы используете Start-Process без указания целевого каталога с помощью -WorkingDirectory, текущее местоположение (каталог) PowerShell также используется для целевого процесса.

  • Поскольку вы используете -Credential для запуска от имени другого пользователя - без повышения прав в этой точке - у целевого пользователя может отсутствовать разрешение на доступ к текущему каталогу, что происходит, например, если текущий каталог находится внутри поддерева домашнего каталога текущего пользователя.

    • К сожалению, сообщение об ошибке PowerShell скрывает эту причину, вводя в заблуждение сообщение: The directory name is invalid.

Fix

  • Либо убедитесь, что текущее местоположение доступно для целевого пользователя,
  • или, предпочтительно, , используйте параметр -WorkingDirectory, чтобы явно установить текущий каталог целевого процесса.

Например, чтобы запустить целевой процесс из каталога, в котором находится целевой скрипт , вы можете использовать что-то вроде:

$script = 'c:\path\to\your\script.ps1'
Start-Process -WorkingDirectory (Split-Path $script) -Credential ...
1 голос
/ 21 ноября 2011

Я знаю, что это может быть немного поздно, но вы выполняете эту команду, когда текущим каталогом является сетевой путь? Я испытал это как проблему, и если я запускаю ту же команду с системного диска, она работает.

0 голосов
/ 20 июля 2017

По-прежнему возникла проблема с установкой -WorkingDirectory в каталог exe ... обнаружил, что установка -WorkingDirectory в C: \ Windows \ System32 и использовал путь к файлу fq, сработал.

...