Bypass a PowerShell cmdlet's confirmation prompt - windows

I am trying to disconnect from a iscsi target from PowerShell using below cmdlet.
Disconnect-IscsiTarget -NodeAddress $Target.NodeAddress
But once i execute that, a confirmation prompt is displayed:
Do you want to perform this Action [yes,yestoall,no,notoall,suspend]
How can i make default to Yes?

Disconnect-IscsiTarget -NodeAddress $Target.NodeAddress -Confirm:$false

Related

Disable a device without a confirmation - PowerShell

I'm working on a script that automates the process of disabling multiple Devices in Windows 10. This is my attempt:
Get-PnpDevice something | Disable-PnpDevice
That code asks the user to enter y or n to confirm the process of disabling the device.
How to bypass the confirmation prompt to make the script full automatic?
*I always run the script as Administrator.
If the script uses PowerShell cmdlets, you can specify -Confirm:$false to suppress the prompt.
Get-PnpDevice something | Disable-PnpDevice -Confirm:$false

Check elevated process status?

I would like to find a way to find out if a process is running as elevated or not using Powershell.
Use Case: Being able to run control panel tasks with elevated privilage as local domain user e.g. Add or Remove programs.
Any help will be appreciated.
#Start add or remove as admin
start-process appwiz.cpl -verb runas
#Check if path exists. Answer is Yes, so process is NOT elevated
get-wmiobject -class win32_process | select-object -properties name, path
These are the two usual options:
Use the #requires -RunAsAdministrator line in your script (requires PowerShell 3.0 or later). If you use this line at the top of your script, it will throw a terminating error and won't execute if the current process isn't elevated.
Use code like the following to detect whether the current process is elevated:
$IsElevated = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

Making Run Once Registry Edit to Exec Power Shell Script

I am trying to have a power shell script resume after a reboot. (I am rebooting to "apply" registry changes I have made") I believe I can accomplish what I want by making a registry edit to the Run Once key. I have looked at this question, but I can't get my similar code to execute at boot. The registry edit is made and at boot something runs because it disappears but it is not finishing the install.
$part2 = Get-ChildItem C:\Windows\ccmcache\ -Recurse -Force -Filter Full_Druva_Reinstall_part2.ps1
$FullPath = $part2.FullName
$KeyPath = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
new-itemproperty -Path $KeyPath -Name !Install-Druva -propertytype String -value "Powershell -executionPolicy Unrestricted -File $FullPath"
Edit
This scrpit is inside a SCCM Package and any solution needs to automatic and require no user input.
Open task scheduler on general give a name> run wheter user logged in or not> trigger at startup>
action
program/script will be powershell.exe
arguments
-ExecutionPolicy Bypass -File "C:\myscripts.ps1"
I wasn't able to make the Run Once Registry work, plus it wouldn't tun with admin cred if a non admin logged in. I also wasn't able to make a schedule task in power shell because my environment is all Win7 and power shell v4.
The solution i used was making a task sequence in SCCM that ran part 1 of my script, restarted, and then ran part 2.

One-time scheduled task that fires on logon for another local user in Powershell

I'm trying to create a one-time scheduled task that fires on login for a local user that is not the user creating the scheduled task. What is the Powershell to do this? I'm using Powershell v3 on Win Server 2012 R2 and Windows 8.1. I need the task to run a line of powershell.
Moving my comment to an answer so this can be resolved.
If you're going to immediately reboot and login as that user just put it in :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
Then the next user to login (any user) will initiate the command.
Schedule it to run from this registry key. The gotcha is you'll need to do it through the HKEY_USERS\SID instead of CurrentUser.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_USERS\S-1-6236236236124362346346-BIG-LONG-NUMBER\Software\Microsoft\Windows\CurrentVersion\RunOnce
Here is how to get the users SID.
$objUser = New-Object System.Security.Principal.NTAccount("KNUCKLE-DRAGGER")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID = $strSID.Value
$strSID
Then drop that $strSID variable inside the HKEY_USERS path to automate creating the command in the correct location.
Set-ItemProperty -Path "registry::HKEY_USERS\$strSID\Software\Microsoft\Windows\CurrentVersion\RunOnce" -Name "MyBatch" -Value "C:\SomeScript.cmd"

Powershell logon script, is it possible to show dialog to user or read some user input?

So is it possible ?
I need to get some user credential to map certain network share. This share is not part of our domain and each user have different credentials.
EDIT
The script works fine if I run it from powershell console.
Problem is that it doesn't show any promp or dialgo when I use it as a login script. When I log into desktop, the script starts, because it writes an debug log, but it doesn't show any dialog or promt user for input.
In your GPO enable the following setting: "Run logon scripts visible" to ensure that the logon script is visible.
You can find it under User Configuration\Administrative Templates\System\Scripts
PowerShell has a Get-Credential cmdlet that can be used to prompt for username/password. For details and examples do Get-Help Get-Credential -Full in PowerShell.
It worked for me. It did show the credential prompt. Below is my script:
"test" | out-file -append C:\test.log
$cred = get-credential
$cred.username | out-file -append C:\test.log
Configuration of Logon script:
gpedit.msc -> User configuration -> Windows Settings -> Scripts ->
Logon -> Choose Powershell scripts tab -> Add and enter path to script
Screenshot:
I've never configured GP like this to run logon scripts so I'm not sure about this...
If you run an arbitrary CMD like ipconfig will that pop up the console window as you're hoping PowerShell will?
If so, instead of using the built-in PowerShell script mechanism, you could call a CMD line or .bat that then calls the PowerShell script:
powershell.exe -noexit -command "& 'path\to\logonscript.ps1'"

Resources