トップ回答者
管理者権限でPowerShellを実行

質問
回答
-
> Set-Contentに対して-Credentialのオプションが対応していないと言うことなのでしょうか?
はい、そういうことです。
なのでローカルファイルの書き換えに、ログオンユーザー以外のユーザー権限が必要である場合は、Invoke-Commandコマンドレット等で別セッションに資格情報を付与して、そのセッション内でSet-Content等を実行する必要があります。
しかし、UAC有効時には、HOSTSファイルの書き換えには管理者の資格情報に加え、昇格の操作が必要となるため、上記の方法は使えません。
PowerShell.exeを管理者の資格情報を用いて昇格して起動し、スクリプトを実行する方法は、「前回のケース」と同様かと思います。
PowerShell単体で完結させたい場合は、以下の方法が参考になるのではないでしょうか。
- 回答としてマーク UltraKatan 2014年5月27日 23:51
すべての返信
-
ご自身で質問しておいて回答を見ていないのでしょうか? であれば質問するべきではありません。
別の問題として、hostsファイルの書き換えはウィルスの常套手段であり、ウィルス対策ソフトはhostsファイルの書き換えをブロックすることが多々あります。別のアプローチをお勧めします。
-
前回と今回で違いがわかりません。権限を得るために子プロセスを立ち上げる必要があり、呼び出す親プロセスがVBSかPowerShellかの違いでしかないと思いますが。しかし、子プロセスを立ち上げると決定した段階で親プロセスでするべき処理はなくなり、別段VBSで解決したのであれば、今さら無理にPowerShellで呼び出す必要はないと思いますが。
後半について私は「ウィルス対策ソフトはhostsファイルの書き換えをブロックすることが多々あります」と書きました。PowerShellがスクリプトをブロックするわけではありません。つまり、PowerShell以外であってもhostsファイルに対する書き換え(書き込み)がブロックされます。hostsファイルを書き換えない方法をお勧めします。
別アプローチについて何か提示するためにはhostsファイルを書き換えることによってどのような結果を得たかったのか、その目的が提示されなければ何も答えようがありません。 -
$password = ConvertTo-SecureString "Pass" -asplaintext -force
$cred = New-Object System.Management.Automation.PsCredential "Acount",$password
$File = $(Get-Content "C:\Windows\System32\Drivers\etc\hosts")
$Hantei = Select-String -path C:\Windows\System32\Drivers\etc\hosts -pattern "#IPADDRESS"
if ($Hantei -eq $null)
{
$File = $File -replace "IPADDRESS","#IPADDRESS"
"本番環境を閲覧します。"
}
else
{
$File = $File -replace "#IPADDRESS","IPADDRESS"
"テスト環境を閲覧します。"
}
$File | Set-Content C:\Windows\System32\Drivers\etc\hosts -Credential $credとすると、「FileSystem プロバイダーが資格情報をサポートしているのは、New-PSDrive コマンドレットでのみです。」
と言うエラーが発生してしまいます。
Set-Contentに対して-Credentialのオプションが対応していないと言うことなのでしょうか?
-
> Set-Contentに対して-Credentialのオプションが対応していないと言うことなのでしょうか?
はい、そういうことです。
なのでローカルファイルの書き換えに、ログオンユーザー以外のユーザー権限が必要である場合は、Invoke-Commandコマンドレット等で別セッションに資格情報を付与して、そのセッション内でSet-Content等を実行する必要があります。
しかし、UAC有効時には、HOSTSファイルの書き換えには管理者の資格情報に加え、昇格の操作が必要となるため、上記の方法は使えません。
PowerShell.exeを管理者の資格情報を用いて昇格して起動し、スクリプトを実行する方法は、「前回のケース」と同様かと思います。
PowerShell単体で完結させたい場合は、以下の方法が参考になるのではないでしょうか。
- 回答としてマーク UltraKatan 2014年5月27日 23:51