PowerShell script to re-install printer, set to default if it was default
We have a printer at work that is giving us problems. We have tried a few different solutions but when a user goes to print to this printer Windows 7 will sometimes display something like:
Windows needs to download and install a software driver from the ... computer
However the PC already has the correct driver. I tried changing a few settings in our group policy according to solutions that came up when I searched this problem but so far nothing has worked. For now I think it would be best to just have Windows reinstall the printer every time the user logs in.
I want the printer to be set to the default printer only if the user already had it set to be the default printer. How can I script this in PowerShell?
windows-7 printer windows-server-2008 powershell network-printer
add a comment |
We have a printer at work that is giving us problems. We have tried a few different solutions but when a user goes to print to this printer Windows 7 will sometimes display something like:
Windows needs to download and install a software driver from the ... computer
However the PC already has the correct driver. I tried changing a few settings in our group policy according to solutions that came up when I searched this problem but so far nothing has worked. For now I think it would be best to just have Windows reinstall the printer every time the user logs in.
I want the printer to be set to the default printer only if the user already had it set to be the default printer. How can I script this in PowerShell?
windows-7 printer windows-server-2008 powershell network-printer
"I want the printer to be set to the default printer only if the user already had it set to be the default printer. " This part is going to be impossible
– soandos
Jul 17 '12 at 5:36
Not impossible, but would require a solution that many people would find unpalatable. You would need to periodically cache which printer is default. The most likely method would be to have a login script cache it to a text file. Then the restore script would just check there to see if it was the default. It means that if the user made the problem printer the default then the printer had the issue before the next login, the script would get it wrong. The OP would have to determine the likelyhood of this edge case.
– EBGreen
Jul 23 '12 at 13:31
add a comment |
We have a printer at work that is giving us problems. We have tried a few different solutions but when a user goes to print to this printer Windows 7 will sometimes display something like:
Windows needs to download and install a software driver from the ... computer
However the PC already has the correct driver. I tried changing a few settings in our group policy according to solutions that came up when I searched this problem but so far nothing has worked. For now I think it would be best to just have Windows reinstall the printer every time the user logs in.
I want the printer to be set to the default printer only if the user already had it set to be the default printer. How can I script this in PowerShell?
windows-7 printer windows-server-2008 powershell network-printer
We have a printer at work that is giving us problems. We have tried a few different solutions but when a user goes to print to this printer Windows 7 will sometimes display something like:
Windows needs to download and install a software driver from the ... computer
However the PC already has the correct driver. I tried changing a few settings in our group policy according to solutions that came up when I searched this problem but so far nothing has worked. For now I think it would be best to just have Windows reinstall the printer every time the user logs in.
I want the printer to be set to the default printer only if the user already had it set to be the default printer. How can I script this in PowerShell?
windows-7 printer windows-server-2008 powershell network-printer
windows-7 printer windows-server-2008 powershell network-printer
edited Jul 17 '12 at 5:35
3498DB
15.8k114762
15.8k114762
asked Jul 16 '12 at 15:16
0xDECAFBAD0xDECAFBAD
612
612
"I want the printer to be set to the default printer only if the user already had it set to be the default printer. " This part is going to be impossible
– soandos
Jul 17 '12 at 5:36
Not impossible, but would require a solution that many people would find unpalatable. You would need to periodically cache which printer is default. The most likely method would be to have a login script cache it to a text file. Then the restore script would just check there to see if it was the default. It means that if the user made the problem printer the default then the printer had the issue before the next login, the script would get it wrong. The OP would have to determine the likelyhood of this edge case.
– EBGreen
Jul 23 '12 at 13:31
add a comment |
"I want the printer to be set to the default printer only if the user already had it set to be the default printer. " This part is going to be impossible
– soandos
Jul 17 '12 at 5:36
Not impossible, but would require a solution that many people would find unpalatable. You would need to periodically cache which printer is default. The most likely method would be to have a login script cache it to a text file. Then the restore script would just check there to see if it was the default. It means that if the user made the problem printer the default then the printer had the issue before the next login, the script would get it wrong. The OP would have to determine the likelyhood of this edge case.
– EBGreen
Jul 23 '12 at 13:31
"I want the printer to be set to the default printer only if the user already had it set to be the default printer. " This part is going to be impossible
– soandos
Jul 17 '12 at 5:36
"I want the printer to be set to the default printer only if the user already had it set to be the default printer. " This part is going to be impossible
– soandos
Jul 17 '12 at 5:36
Not impossible, but would require a solution that many people would find unpalatable. You would need to periodically cache which printer is default. The most likely method would be to have a login script cache it to a text file. Then the restore script would just check there to see if it was the default. It means that if the user made the problem printer the default then the printer had the issue before the next login, the script would get it wrong. The OP would have to determine the likelyhood of this edge case.
– EBGreen
Jul 23 '12 at 13:31
Not impossible, but would require a solution that many people would find unpalatable. You would need to periodically cache which printer is default. The most likely method would be to have a login script cache it to a text file. Then the restore script would just check there to see if it was the default. It means that if the user made the problem printer the default then the printer had the issue before the next login, the script would get it wrong. The OP would have to determine the likelyhood of this edge case.
– EBGreen
Jul 23 '12 at 13:31
add a comment |
1 Answer
1
active
oldest
votes
This can be achieved using WMI using the Win32_Printer class. Below is an example using powershell, you can do it in vbscript too.
You can adapt the script below to your own needs. The example assumes the driver is called "TOSHIBA e-STUDIO3510cSeriesPCL6"
$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"
foreach ($printer in $printers) {
$printer.Delete()
$return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus
If ($return_status -eq 0 -and $printer.Default) {
(Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
}
}
What the script does is query which printers are using a particular driver and reinstalls them while maintaining the default printer status if needed.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
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',
autoActivateHeartbeat: false,
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%2fsuperuser.com%2fquestions%2f449558%2fpowershell-script-to-re-install-printer-set-to-default-if-it-was-default%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
This can be achieved using WMI using the Win32_Printer class. Below is an example using powershell, you can do it in vbscript too.
You can adapt the script below to your own needs. The example assumes the driver is called "TOSHIBA e-STUDIO3510cSeriesPCL6"
$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"
foreach ($printer in $printers) {
$printer.Delete()
$return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus
If ($return_status -eq 0 -and $printer.Default) {
(Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
}
}
What the script does is query which printers are using a particular driver and reinstalls them while maintaining the default printer status if needed.
add a comment |
This can be achieved using WMI using the Win32_Printer class. Below is an example using powershell, you can do it in vbscript too.
You can adapt the script below to your own needs. The example assumes the driver is called "TOSHIBA e-STUDIO3510cSeriesPCL6"
$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"
foreach ($printer in $printers) {
$printer.Delete()
$return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus
If ($return_status -eq 0 -and $printer.Default) {
(Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
}
}
What the script does is query which printers are using a particular driver and reinstalls them while maintaining the default printer status if needed.
add a comment |
This can be achieved using WMI using the Win32_Printer class. Below is an example using powershell, you can do it in vbscript too.
You can adapt the script below to your own needs. The example assumes the driver is called "TOSHIBA e-STUDIO3510cSeriesPCL6"
$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"
foreach ($printer in $printers) {
$printer.Delete()
$return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus
If ($return_status -eq 0 -and $printer.Default) {
(Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
}
}
What the script does is query which printers are using a particular driver and reinstalls them while maintaining the default printer status if needed.
This can be achieved using WMI using the Win32_Printer class. Below is an example using powershell, you can do it in vbscript too.
You can adapt the script below to your own needs. The example assumes the driver is called "TOSHIBA e-STUDIO3510cSeriesPCL6"
$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"
foreach ($printer in $printers) {
$printer.Delete()
$return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus
If ($return_status -eq 0 -and $printer.Default) {
(Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
}
}
What the script does is query which printers are using a particular driver and reinstalls them while maintaining the default printer status if needed.
edited May 12 '13 at 3:57
answered May 5 '13 at 16:25
MFTMFT
46236
46236
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- 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%2fsuperuser.com%2fquestions%2f449558%2fpowershell-script-to-re-install-printer-set-to-default-if-it-was-default%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
"I want the printer to be set to the default printer only if the user already had it set to be the default printer. " This part is going to be impossible
– soandos
Jul 17 '12 at 5:36
Not impossible, but would require a solution that many people would find unpalatable. You would need to periodically cache which printer is default. The most likely method would be to have a login script cache it to a text file. Then the restore script would just check there to see if it was the default. It means that if the user made the problem printer the default then the printer had the issue before the next login, the script would get it wrong. The OP would have to determine the likelyhood of this edge case.
– EBGreen
Jul 23 '12 at 13:31