以下のコードに応答してこのエラーが発生する理由を知っているでしょうか。ユーザー名とパスワードが正しいことを確認しました。
$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はパスの場所に存在するため、何らかの理由でideでこれが困難になっています。それでも、PowerShellコマンドPrompt/Shell内で直接実行すると機能します。ローカル管理者として実行されているローカルマシンアカウントでログインしました。スクリプトは、管理者権限を持たず、ユーザー権限のみで実行されるドメインアカウントに実行を指示します。
これはバグですか?開発者として、PowerShellコマンドのプロンプトウィンドウでブロックを実行すると機能するため、IDEはこれによってトリップされるべきではありませんか?
同じバグがあります。
この機能はPowershellISEでは問題ありませんが、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'
これは奇妙なものですが、私はエラーを再現し、これで修正しました...
http://support.Microsoft.com/kb/832434
基本的に、Powershell_ISE(またはPowerGUI!)の開始ディレクトリをシステム全体の値に変更します。
私はこれがかなり遅いことを知っていますが、スレッドは私を助けました(特に @ 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
を指定すると、問題が解決しました。
問題の最も良い説明は コメントby Nathan Hartley に埋もれているので、ここで要約しましょう:
問題は単にファイルシステムのアクセス許可に関連するであり、ホスト環境(コンソールとISE)とは何の関係もありません。
Start-Process
でターゲットディレクトリを指定せずに-WorkingDirectory
を使用すると、PowerShellの現在の場所(ディレクトリ)がターゲットプロセスにも使用されます。
別のユーザーとして実行するために-Credential
を使用している-その時点で昇格なし-ターゲットユーザーが現在のディレクトリにアクセスする権限を持っていない可能性があるたとえば、現在のディレクトリが現在のユーザーのホームディレクトリサブツリー内にある場合に発生します。
The directory name is invalid.
修正:
-WorkingDirectory
パラメータを使用して、ターゲットプロセスの現在のディレクトリを明示的に設定します。たとえば、ターゲットscriptが配置されているディレクトリからターゲットプロセスを開始するには、次のようなものを使用できます。
$script = 'c:\path\to\your\script.ps1'
Start-Process -WorkingDirectory (Split-Path $script) -Credential ...
これは少し遅れるかもしれませんが、現在のディレクトリがネットワークパスのときにそのコマンドを実行していますか?私はこれを問題として経験しました、そして私がシステムドライブから同じコマンドを実行するならばそれは働きます。
私の場合、その理由は、Windows 10が保存して、予想とは異なる方向に新しいファイルを作成したためです。profile.ps1
ファイルをC:\Users\Username\Documents\WindowsPowerShell
に追加しようとしましたが、C:\Users\Username\**OneDrive**\Documents\WindowsPowerShell
である必要があります。これらの手順に従ってください
RUN:
Test-Path C:\Users\User\Documents\WindowsPowerShell\
IF FALSE
New-Item -Path C:\Users\User\Documents\WindowsPowerShell\ -ItemType Directory
THEN
New-Item -Path $profile.CurrentUserAllHosts -Type File
THEN
start $profile.CurrentUserAllHosts