Set current location to match the Drive letter same as the running script's drive
up vote
0
down vote
favorite
In PowerShell, how to dynamically read the Drive (letter) where running Script resides then set that Drive as current location so that:
- all relative paths written in the script would use (and create files/folder-structure) in that drive, also,
- after script-execution finishes, the PS-Command-Prompt would also show that Drive (where the running script resides):
For example, before execution, if the current location is C: drive, i.e. the PowerShell command prompt is showing "C:" and my script resides in "D:ps_scriptstest.ps1", all relative paths in the script should use (and create files/folder) in the D: drive.
Basically I'm developing an installer-script that should install the app in the Drive where the script is stored (i.e. it has to be "Relative" as opposed to "Absolute/Fixed" drive).
TIA
powershell
add a comment |
up vote
0
down vote
favorite
In PowerShell, how to dynamically read the Drive (letter) where running Script resides then set that Drive as current location so that:
- all relative paths written in the script would use (and create files/folder-structure) in that drive, also,
- after script-execution finishes, the PS-Command-Prompt would also show that Drive (where the running script resides):
For example, before execution, if the current location is C: drive, i.e. the PowerShell command prompt is showing "C:" and my script resides in "D:ps_scriptstest.ps1", all relative paths in the script should use (and create files/folder) in the D: drive.
Basically I'm developing an installer-script that should install the app in the Drive where the script is stored (i.e. it has to be "Relative" as opposed to "Absolute/Fixed" drive).
TIA
powershell
Your title is misleading, when running a script there is no prompt, you are referring to the current location.
– LotPings
Nov 9 at 14:49
Nope, there always a "Current-Drive" behind the scene (you're right that it won't be visible whilst execution, but) for example, if you want to (force) create a file into a path without the drive letter i.e. path starting with the root e.g. myDir you will see your file will get created in the Drive that was visible before you started the execution, so if your PS-cmd-prompt was showing "PS Z:test", the file will be created within Z:myDir>. If it was "PS C:Windows>, the file will be created in C:myDir. Hope this makes sense.
– Eddie Kumar
Nov 9 at 15:05
If you run a script with a path on a different drive that doesn't change the current location.Get-PSDrive | ? CurrentLocation
orGet-Location
will tell you where your current location is.
– LotPings
Nov 9 at 15:21
Agree, I needed to set location of the Drive only (omitting the rest of the path), I have updated the question & title.
– Eddie Kumar
Nov 9 at 15:46
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
In PowerShell, how to dynamically read the Drive (letter) where running Script resides then set that Drive as current location so that:
- all relative paths written in the script would use (and create files/folder-structure) in that drive, also,
- after script-execution finishes, the PS-Command-Prompt would also show that Drive (where the running script resides):
For example, before execution, if the current location is C: drive, i.e. the PowerShell command prompt is showing "C:" and my script resides in "D:ps_scriptstest.ps1", all relative paths in the script should use (and create files/folder) in the D: drive.
Basically I'm developing an installer-script that should install the app in the Drive where the script is stored (i.e. it has to be "Relative" as opposed to "Absolute/Fixed" drive).
TIA
powershell
In PowerShell, how to dynamically read the Drive (letter) where running Script resides then set that Drive as current location so that:
- all relative paths written in the script would use (and create files/folder-structure) in that drive, also,
- after script-execution finishes, the PS-Command-Prompt would also show that Drive (where the running script resides):
For example, before execution, if the current location is C: drive, i.e. the PowerShell command prompt is showing "C:" and my script resides in "D:ps_scriptstest.ps1", all relative paths in the script should use (and create files/folder) in the D: drive.
Basically I'm developing an installer-script that should install the app in the Drive where the script is stored (i.e. it has to be "Relative" as opposed to "Absolute/Fixed" drive).
TIA
powershell
powershell
edited Nov 9 at 16:12
asked Nov 9 at 12:44
Eddie Kumar
32618
32618
Your title is misleading, when running a script there is no prompt, you are referring to the current location.
– LotPings
Nov 9 at 14:49
Nope, there always a "Current-Drive" behind the scene (you're right that it won't be visible whilst execution, but) for example, if you want to (force) create a file into a path without the drive letter i.e. path starting with the root e.g. myDir you will see your file will get created in the Drive that was visible before you started the execution, so if your PS-cmd-prompt was showing "PS Z:test", the file will be created within Z:myDir>. If it was "PS C:Windows>, the file will be created in C:myDir. Hope this makes sense.
– Eddie Kumar
Nov 9 at 15:05
If you run a script with a path on a different drive that doesn't change the current location.Get-PSDrive | ? CurrentLocation
orGet-Location
will tell you where your current location is.
– LotPings
Nov 9 at 15:21
Agree, I needed to set location of the Drive only (omitting the rest of the path), I have updated the question & title.
– Eddie Kumar
Nov 9 at 15:46
add a comment |
Your title is misleading, when running a script there is no prompt, you are referring to the current location.
– LotPings
Nov 9 at 14:49
Nope, there always a "Current-Drive" behind the scene (you're right that it won't be visible whilst execution, but) for example, if you want to (force) create a file into a path without the drive letter i.e. path starting with the root e.g. myDir you will see your file will get created in the Drive that was visible before you started the execution, so if your PS-cmd-prompt was showing "PS Z:test", the file will be created within Z:myDir>. If it was "PS C:Windows>, the file will be created in C:myDir. Hope this makes sense.
– Eddie Kumar
Nov 9 at 15:05
If you run a script with a path on a different drive that doesn't change the current location.Get-PSDrive | ? CurrentLocation
orGet-Location
will tell you where your current location is.
– LotPings
Nov 9 at 15:21
Agree, I needed to set location of the Drive only (omitting the rest of the path), I have updated the question & title.
– Eddie Kumar
Nov 9 at 15:46
Your title is misleading, when running a script there is no prompt, you are referring to the current location.
– LotPings
Nov 9 at 14:49
Your title is misleading, when running a script there is no prompt, you are referring to the current location.
– LotPings
Nov 9 at 14:49
Nope, there always a "Current-Drive" behind the scene (you're right that it won't be visible whilst execution, but) for example, if you want to (force) create a file into a path without the drive letter i.e. path starting with the root e.g. myDir you will see your file will get created in the Drive that was visible before you started the execution, so if your PS-cmd-prompt was showing "PS Z:test", the file will be created within Z:myDir>. If it was "PS C:Windows>, the file will be created in C:myDir. Hope this makes sense.
– Eddie Kumar
Nov 9 at 15:05
Nope, there always a "Current-Drive" behind the scene (you're right that it won't be visible whilst execution, but) for example, if you want to (force) create a file into a path without the drive letter i.e. path starting with the root e.g. myDir you will see your file will get created in the Drive that was visible before you started the execution, so if your PS-cmd-prompt was showing "PS Z:test", the file will be created within Z:myDir>. If it was "PS C:Windows>, the file will be created in C:myDir. Hope this makes sense.
– Eddie Kumar
Nov 9 at 15:05
If you run a script with a path on a different drive that doesn't change the current location.
Get-PSDrive | ? CurrentLocation
or Get-Location
will tell you where your current location is.– LotPings
Nov 9 at 15:21
If you run a script with a path on a different drive that doesn't change the current location.
Get-PSDrive | ? CurrentLocation
or Get-Location
will tell you where your current location is.– LotPings
Nov 9 at 15:21
Agree, I needed to set location of the Drive only (omitting the rest of the path), I have updated the question & title.
– Eddie Kumar
Nov 9 at 15:46
Agree, I needed to set location of the Drive only (omitting the rest of the path), I have updated the question & title.
– Eddie Kumar
Nov 9 at 15:46
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
After a bit of struggle and few "trials and errors", I managed to write the following script which is able to set current location of the Drive-only (omitting the rest of the path), to match the Drive where the running script resides:
Write-host ('$PSScriptRoot: ' + $PSScriptRoot) #Checking full path of own running script.
$drive = ((Get-Item $PSScriptRoot).PSDrive.Name) #Getting drive letter of running script.
Set-Location -Path "$($drive):" #Setting Disk-Drive on PS-Cmd-Prompt.
Note: I was struggling/getting error at the last line, because I had forgotten to enclose the $drive
variable within $()
, to evaluate it i.e. convert it into an expression, as soon I did this, Voila!!!
Hope this helps others.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53225962%2fset-current-location-to-match-the-drive-letter-same-as-the-running-scripts-driv%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
After a bit of struggle and few "trials and errors", I managed to write the following script which is able to set current location of the Drive-only (omitting the rest of the path), to match the Drive where the running script resides:
Write-host ('$PSScriptRoot: ' + $PSScriptRoot) #Checking full path of own running script.
$drive = ((Get-Item $PSScriptRoot).PSDrive.Name) #Getting drive letter of running script.
Set-Location -Path "$($drive):" #Setting Disk-Drive on PS-Cmd-Prompt.
Note: I was struggling/getting error at the last line, because I had forgotten to enclose the $drive
variable within $()
, to evaluate it i.e. convert it into an expression, as soon I did this, Voila!!!
Hope this helps others.
add a comment |
up vote
0
down vote
After a bit of struggle and few "trials and errors", I managed to write the following script which is able to set current location of the Drive-only (omitting the rest of the path), to match the Drive where the running script resides:
Write-host ('$PSScriptRoot: ' + $PSScriptRoot) #Checking full path of own running script.
$drive = ((Get-Item $PSScriptRoot).PSDrive.Name) #Getting drive letter of running script.
Set-Location -Path "$($drive):" #Setting Disk-Drive on PS-Cmd-Prompt.
Note: I was struggling/getting error at the last line, because I had forgotten to enclose the $drive
variable within $()
, to evaluate it i.e. convert it into an expression, as soon I did this, Voila!!!
Hope this helps others.
add a comment |
up vote
0
down vote
up vote
0
down vote
After a bit of struggle and few "trials and errors", I managed to write the following script which is able to set current location of the Drive-only (omitting the rest of the path), to match the Drive where the running script resides:
Write-host ('$PSScriptRoot: ' + $PSScriptRoot) #Checking full path of own running script.
$drive = ((Get-Item $PSScriptRoot).PSDrive.Name) #Getting drive letter of running script.
Set-Location -Path "$($drive):" #Setting Disk-Drive on PS-Cmd-Prompt.
Note: I was struggling/getting error at the last line, because I had forgotten to enclose the $drive
variable within $()
, to evaluate it i.e. convert it into an expression, as soon I did this, Voila!!!
Hope this helps others.
After a bit of struggle and few "trials and errors", I managed to write the following script which is able to set current location of the Drive-only (omitting the rest of the path), to match the Drive where the running script resides:
Write-host ('$PSScriptRoot: ' + $PSScriptRoot) #Checking full path of own running script.
$drive = ((Get-Item $PSScriptRoot).PSDrive.Name) #Getting drive letter of running script.
Set-Location -Path "$($drive):" #Setting Disk-Drive on PS-Cmd-Prompt.
Note: I was struggling/getting error at the last line, because I had forgotten to enclose the $drive
variable within $()
, to evaluate it i.e. convert it into an expression, as soon I did this, Voila!!!
Hope this helps others.
edited Nov 9 at 15:49
answered Nov 9 at 12:50
Eddie Kumar
32618
32618
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53225962%2fset-current-location-to-match-the-drive-letter-same-as-the-running-scripts-driv%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Your title is misleading, when running a script there is no prompt, you are referring to the current location.
– LotPings
Nov 9 at 14:49
Nope, there always a "Current-Drive" behind the scene (you're right that it won't be visible whilst execution, but) for example, if you want to (force) create a file into a path without the drive letter i.e. path starting with the root e.g. myDir you will see your file will get created in the Drive that was visible before you started the execution, so if your PS-cmd-prompt was showing "PS Z:test", the file will be created within Z:myDir>. If it was "PS C:Windows>, the file will be created in C:myDir. Hope this makes sense.
– Eddie Kumar
Nov 9 at 15:05
If you run a script with a path on a different drive that doesn't change the current location.
Get-PSDrive | ? CurrentLocation
orGet-Location
will tell you where your current location is.– LotPings
Nov 9 at 15:21
Agree, I needed to set location of the Drive only (omitting the rest of the path), I have updated the question & title.
– Eddie Kumar
Nov 9 at 15:46