Not negotiating the job offer puts you at a disadvantage for the duration of your career in a new company. There’s a snowball effect because your performance raises and after-promotion salary are all affected by what you accept. It also affects the next job offers you get when you move companies.
There’s no question that everyone wants a higher base salary, the problem is it’s not exactly clear how to negotiate a salary after a job offer. You can’t just blurt out a number and expect your future employer to agree with you.
Fear of having the job offer rescinded doesn’t help, either.
What you need is a strategy and the right mindset. In this tutorial, you’ll lean how to negotiate a higher salary and additional benefits during a job offer negotiation. This process starts with researching information to back up your request for a higher salary.
Are you ready to negotiate a higher salary for a new job offer? (graphic source)
Table of contents
Finding the Average Salary and Compensation Package for Your Position
Assuming the job offer you received is lower than the market average will never work. You need data to prove your claims.
1. Salary Databases and Other Online Sources
Websites like PayScale and Glassdoor have salary estimates for just about any position. Some of these sites allow users to filter the information based on location. You can also go to the Bureau of Labor Statistics, which provides a comprehensive database of salary information for different jobs.
Below are different sources for salary research.
Other Salary Comparison Websites
- Salary.com
- Indeed.com
- Bureau of Labor Statistics (BLS)
Another way to find the average salary is to look for job ads that display salary information on different job sites.
2. Dig Deep to Learn All About the Company
Find out if the company has job grades or bands, and what band your target position is in. If they have a job grade system, you have to accept that it’s almost impossible to go above their imposed upper limit.
The salary also differs based on the company’s size and industry. A mom and pop shop will have a smaller budget compared to a multinational conglomerate, and it’s the same case if you compare a Wall Street firm with a local restaurant.
Investigate the benefits and perks they offer, too.
3. Ask Other Employees in Similar Positions
Ask your friends, family, professors, former colleagues, and mentors to give you feedback on the job offer you got. Ask them if it’s fair based on what they receive. People are, in general, uncomfortable talking about their income, but you’ll be surprised how open some friends are.
If you don’t want to ask directly, give them an estimate of the job offer, then ask if it’s in-line with industry standards for someone with your experience.
4. Gather Salary Info From Unions
Unions exist to protect the welfare of their members, that’s why they also keep information about acceptable salary ranges for different jobs in your industry.
5. Compare Cost of Living of Your Location
Compensation is also affected by the job’s location due to cost of living and talent demand. Big cities like New York and Silicon Valley have higher compensation, as opposed to small rural towns.
How to Negotiate Salary Perks
A 2015 study from the BLS states that the remaining 30% of compensation packages is comprised of benefits.
So focusing solely on a job offer’s base pay can lead to as much as a 30% loss on your part. This is also your best bet of getting a higher compensation package overall, if the employer’s base pay has a small wiggle room.
Consider Negotiating
- More vacation time
- Relocation allowance (if you’re moving to another city or State)
- Signing bonus
- Commuting allowance
- Expense account
- Performance-based bonuses
Also, training and professional development programs.
Other Perks to Consider
These are non-negotiable perks, because negotiating them involves more decision makers and wider company changes. All of these benefits are still worth considering though, because they can affect your expenses and overall enjoyment of the company.
- Health insurance
- Added insurance perks, such as a health savings account, or coverage for your kids
- Wellness programs, such as gym membership or bonus for getting a flu shot
- Education subsidy
- 401(K) contributions
If you’re creative enough, you can also negotiate certain aspects of the job. For instance, you can negotiate access to exciting projects a tad outside your current description.
The Importance of Choosing the Right Time to Negotiate
Timing is critical when negotiating a new job offer. Negotiating too early gives the impression that you’re arrogant and selfish.
Anna Runyan, Founder of Classy Career Girl, explains, “You don’t want to send a signal that you only care how much you can get. So always wait for the employer to make an offer, and never be the one to start the discussion about salary.”
This is a basic rule of negotiation, you have more power when the company has narrowed down their prospects to just one candidate—you. Sure, they probably have a second choice, but they prefer you more than the second pick, and a lot more than the other candidates. That’s leverage you can use.
You don’t have this leverage during the interview process.
When It’s Too Late to Negotiate
You can’t take your word back after you agreed to the job offer. Even if you realize the commuting expenses are terrible, and the money isn’t enough to pay your loans, your chances of winning that negotiation are slim to none.
The employer, the HR manager, and all your co-workers will think you’re either not serious about the job, or a total diva. Either reputation isn’t appealing when you’re starting out with a new company.
That’s why it’s important to ask for a day or two to consider the job offer. Don’t give in to pressure, even if the employer says they want someone to start right away.
How to Negotiate a Higher Starting Salary
1. Know That the Offer Isn’t Final
This isn’t one of the steps on how to negotiate salary, but it’s important that you have this mindset. Don’t let your fear of negotiating or talking about money stop you from getting what you deserve, and what you will work hard for during your career with that company.
Employers expect you to know how to ask for more money in a job offer. For some jobs, such as sales and business development, not negotiating shows a certain degree of incompetence.
2. Show Enthusiasm
But don’t be desperate. Always show that you’re excited about the job and remain positive even if the base offer isn’t what you expected.
Show them you want the job by starting the negotiation with positive phrases like, “I’m excited to work with your team” or “I’m eager to start working and I know that I’d make a good contribution to the company.”
Complaining about the salary right off the bat shows disregard for the opportunity they gave you, and that you’re difficult to work with.
3. Pick a Range instead of a Specific Number
“Most people will low-ball themselves at the first opportunity. They think they’re being humble, when in reality they could have made more money,” says Lisa Rangel of Chameleon Resumes.
To fight this, mention a pay range instead of giving an exact number so you have a cushion.
Start the lower limit of the pay range at 5% higher than your current salary if you’re moving to a similar position. This way, you won’t be severely affected if, for some reason, you don’t get an increase in your first two years at the company. Start your pay range at 8% to 10% higher than your current salary if you’re accepting a job for a higher role.
Of course, the above strategy assumes that your current salary is at par with the market pay for your job, based on location and other factors. If it isn’t, you have to consider the going rate for your salary first.
4. Aim Higher Within Reason
Your salary demands should always be within reason.
Rangel explains, “Applicants need to accept a certain level of reality when negotiating salaries. There’s a big difference between asking for a 10% increase and asking for some extra zeroes.”
Your experience plays a big role in the negotiation process, too. If you’re new to the workforce or the job itself, you will definitely earn less than someone doing the job for years. Fresh graduates for saturated industries will have less negotiating leverage than applicants in booming markets.
5. Explain the Why and How of Your Request
Every employer knows that you’ll want a fair job offer, but you also need to show genuine care for the job and the company’s interest. So always explain why you want a higher salary, and then back it up with why you think you’re worth that extra money.
Higher Salary Example
“I would like to explore a slightly higher salary of $65,000 instead of the original $55,000 given the results I’ve achieved for my former employers, which we talked about during the interviews.”
Non-Monetary Negotiation Example
“Given my pending relocation to work here, I would like to start on August 25 instead of the 18th. That would give me extra time to finish my move-in, so I can start the job totally focused on my work.”
6. Focus on the ‘We’
Negotiation isn’t a you v.s. them battle. You have to be mindful of how you’re coming off to the recruiter or hiring manager. Smile and always be pleasant and polite, even if the discussion isn’t going your way. You don’t want them to feel as if they’re dealing with a spoiled kid asking for more candy.
Where possible, use phrases like “I understand” or “I see where you’re coming from.” The way you talk should show that you empathize with the employer and understand whatever hesitations they have about giving you a higher salary.
7. Embrace the Awkward Pauses
Silence is uncomfortable for lots of people, especially during negotiations. But what you consider as awkward pauses are only natural breaks in the communication process. This is the time when the other party is digesting what you just said, or is in the process of formulating a response.
Keep quiet and wait for the HR manager to talk after you’ve said your piece. Desperately trying to fill the silence shows lack of confidence. It also makes you prone to saying something you don’t intend to.
8. Know When to Stop
Employers expect you to counter offer, but nobody wants a haggler who will negotiate everything down to the last cent.
Let’s say you want $65,000 but the best they can do is $58,000. Don’t go back with another counter offer of $60,000 as that might just annoy the HR manager you’re dealing with. If the budget allows for $60,000, they would have already given it to you.
What you can do now is negotiate other perks to make up the difference, such as more vacation time or an early performance review. Again, the key is to balance what you want and the employer’s interests.
Negotiation Scripts
You want to be ready to handle common salary negotiation scenarios, be ready with counter offers, and responses that will help you secure more income for your new job. Use these scripts to prepare for your phone or in-person salary negotiation:
1. A Counter Offer
“Thank you for this opportunity. I’m excited to start working with your team, however, I hope we can explore the possibility of $65,000. I think that amount better reflects the job scope of the position and my previous experience in this field.”
2. “We don’t have the budget for that” or “That’s the maximum we offer for this position”
“I totally understand that you have a specific budget for this position, and I want to work with you to come up with a solution that benefits us both. According to my research for this position on (website name), the typical salary range for someone with my qualifications is closer to $70,000 instead of $60,000. Can we meet halfway?”
3. If You Have an Offer From Another Company
“Thank you for this job offer. As you know, however, I have also applied to other companies and have just received another offer. But as I love the company and the work you do, I would prefer to work here if you can match their offer of $80,000”
4. “The budget is fixed”
“I understand that $55,000 is the best you can offer for the base salary. Given my experience and solid track record, I hope you can give me an extra $5,000 as a performance based bonus to make up for the difference.”
If they don’t agree to the extra performance bonus, try asking for extra vacation days, training allowance, or another benefit.
4. “Your salary history shows this offer is already an increase for you”
“Yes, I made less at my last job. But the additional training and experienced I’ve gained during that period warrants an increase. What I’m paid right now is also below the market rate, and that’s the number one reason I’m in the market for a new job.”
5. “You would be overpaid compared to our other employees”
“I’m eager to start working with your team. But the research I’ve done on comparable living costs between Florida and San Francisco shows that a base of $135,000 is the market value for someone with my experience. Accepting an offer of $95,000 would also drastically alter my living situation due to the cost of living.”
Be Prepared to Walk Away
You have to decide whether you’re prepared to walk away before the negotiation even starts. Knowing you’re ready to decline the offer will give you a sense of confidence, so you don’t appear desperate.
Having this mindset doesn’t mean you have no power over the negotiation outcome. It just means you accept that some things are beyond your control. The best you can do is practice how to ask for more money in a job offer way before the negotiation starts.
You can also try negotiating via email:
Discover more career tutorials on Envato Tuts+, that will help you secure a new job, earn more income, and level up your career.
business.tutsplus.com
Starts a Windows PowerShell background job.
In This Article
Start-Job ] []
Start-Job ] ] []
Start-Job -LiteralPath ] []
Start-Job ] []
Description
The Start-Job cmdlet starts a Windows PowerShell background job on the local computer.
A Windows PowerShell background job runs a command without interacting with the current session. When you start a background job, a job object returns immediately, even if the job takes an extended time to finish. You can continue to work in the session without interruption while the job runs.
The job object contains useful information about the job, but it does not contain the job results. When the job finishes, use the Receive-Job cmdlet to get the results of the job. For more information about background jobs, see about_Jobs.
To run a background job on a remote computer, use the AsJob parameter that is available on many cmdlets, or use the Invoke-Command cmdlet to run a Start-Job command on the remote computer. For more information, see about_Remote_Jobs.
Starting in Windows PowerShell 3.0, Start-Job can start instances of custom job types, such as scheduled jobs. For information about how to use Start-Job to start jobs with custom types, see the help topics for the job type feature.
Examples
Example 1: Start a background job
PS C:> Start-Job -ScriptBlock {Get-Process} Id Name State HasMoreData Location Command --- ---- ----- ----------- -------- ------- 1 Job1 Running True localhost get-process
This command starts a background job that runs a Get-Process command. The command returns a job object that has information about the job. The command prompt returns immediately so that you can work in the session while the job runs in the background.
Example 2: Start a job by using Invoke-Command
PS C:> $jobWRM = Invoke-Command -ComputerName (Get-Content servers.txt) -ScriptBlock {Get-Service winrm} -JobName "WinRM" -ThrottleLimit 16 -AsJob
This command uses the Invoke-Command cmdlet and its AsJob parameter to start a background job that runs a command on many computers. Because the command is running on a server that has significant network traffic, the command uses the ThrottleLimit parameter of Invoke-Command to limit the number of concurrent commands to 16.
The command uses the ComputerName parameter to specify the computers on which the job runs. The value of the ComputerName parameter is a Get-Content command that gets the text in the Servers.txt file, a file of computer names in a domain.
The command uses the ScriptBlock parameter to specify the command and the JobName parameter to specify a friendly name for the job.
Example 3: Get events from the System log on the local computer
PS C:> $j = Start-Job -ScriptBlock {Get-EventLog -Log system} -Credential domain01user01 PS C:> $j | Format-List -Property * HasMoreData : True StatusMessage : Location : localhost Command : get-eventlog -log system JobStateInfo : Running Finished : System.Threading.ManualResetEvent InstanceId : 2d9d775f-63e0-4d48-b4bc-c05d0e177f34 Id : 1 Name : Job1 ChildJobs : {Job2} Output : {} Error : {} Progress : {} Verbose : {} Debug : {} Warning : {} StateChanged : PS C:> $j.JobStateInfo.state Completed PS C:> $results = Receive-Job -Job $j PS C:> $results Index Time Type Source EventID Message ----- ---- ---- ------ ------- ------- 84366 Feb 18 19:20 Information Service Control M... 7036 The description... 84365 Feb 18 19:16 Information Service Control M... 7036 The description... 84364 Feb 18 19:10 Information Service Control M... 7036 The description... ...
These commands manage a background job that gets all of the events from the System log in Event Viewer. The job runs on the local computer.
The first command uses the Start-Job cmdlet to start the job. It uses the Credential parameter to specify the user account of a user who has permission to run the job on the computer. Then it stores the job object that Start-Job returns in the $j variable.
At this point, you can resume your other work while the job finishes.
The second command uses a pipeline operator (|) to pass the job object in $j to the Format-List cmdlet. The Format-List command uses the Property parameter with a value of all (*) to display all of the properties of the job object in a list.
The third command displays the value of the JobStateInfo property. This contains the status of the job.
The fourth command uses the Receive-Job cmdlet to get the results of the job. It stores the results in the $results variable.
The final command displays the contents of the $results variable.
Example 4: Run a script as a background job
PS C:> Start-Job -FilePath "c:scriptssample.ps1"
This command runs the Sample.ps1 script as a background job.
Example 5: Get a process by name by using a background job
PS C:> Start-Job -Name "WinRm" -ScriptBlock {Get-Process winrm}
This command runs a background job that gets the WinRM process on the local computer. The command uses the ScriptBlock parameter to specify the command that runs in the background job. It uses the Name parameter to specify a friendly name for the new job.
Example 6: Collect and save data by using a background job
PS C:> Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {Get-Map -Name * | Set-Content D:Maps.tif} -RunAs32
This command starts a job that collects lots of data, and then saves it in a .tif file. The command uses the InitializationScript parameter to run a script block that imports a required module. It also uses the RunAs32 parameter to run the job in a 32-bit process even if the computer has a 64-bit operating system.
Required Parameters
-DefinitionName
Specifies the definition name of the job that this cmdlet starts. Use this parameter to start custom job types that have a definition name, such as scheduled jobs.
When you use Start-Job to start an instance of a scheduled job, the job starts immediately, regardless of job triggers or job options. The resulting job instance is a scheduled job, but it is not saved to disk like triggered scheduled jobs. Also, you cannot use the ArgumentList parameter of Start-Job to provide values for parameters of scripts that run in a scheduled job. For more information, see about_Scheduled_Jobs.
This parameter was introduced in Windows PowerShell 3.0.
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Specifies a local script that this cmdlet runs as a background job. Enter the path and file name of the script or pipe a script path to Start-Job. The script must be on the local computer or in a folder that the local computer can access.
When you use this parameter, Windows PowerShell converts the contents of the specified script file to a script block and runs the script block as a background job.
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Specifies a local script that this cmdlet runs as a background job. Enter the path of a script on the local computer.
Unlike the FilePath parameter, this cmdlet uses the value of the LiteralPath parameter exactly as it is typed. No characters are interpreted as wildcard characters. If the path includes escape characters, enclose it in single quotation marks. Single quotation marks tell Windows PowerShell not to interpret any characters as escape sequences.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Specifies the commands to run in the background job. Enclose the commands in braces ( { } ) to create a script block. This parameter is required.
Type: | ScriptBlock |
Aliases: | Command |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Optional Parameters
-ArgumentList
Specifies an array of arguments, or parameter values, for the script that is specified by the FilePath parameter.
Because all of the values that follow the ArgumentList parameter name are interpreted as being values of ArgumentList, specify this parameter as the last parameter in the command.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Specifies the mechanism that is used to authenticate user credentials. The acceptable values for this parameter are:
- Default
- Basic
- Credssp
- Digest
- Kerberos
- Negotiate
- NegotiateWithImplicitCredential
The default value is Default.
CredSSP authentication is available only in Windows Vista, Windows Server 2008, and later versions of the Windows operating system.
For more information about the values of this parameter, see AuthenticationMechanism Enumeration in the MSDN library.
Caution: Credential Security Support Provider (CredSSP) authentication, in which the user’s credentials are passed to a remote computer to be authenticated, is designed for commands that require authentication on more than one resource, such as accessing a remote network share. This mechanism increases the security risk of the remote operation. If the remote computer is compromised, the credentials that are passed to it can be used to control the network session.
Type: | AuthenticationMechanism |
Parameter Sets: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Specifies a user account that has permission to perform this action. The default is the current user.
Type a user name, such as User01 or Domain01User01, or enter a PSCredential object, such as one from the Get-Credential cmdlet.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DefinitionPath
Specifies path of the definition for the job that this cmdlet starts. Enter the definition path. The concatenation of the values of the DefinitionPath and DefinitionName parameters is the fully qualified path of the job definition. Use this parameter to start custom job types that have a definition path, such as scheduled jobs.
For scheduled jobs, the value of the DefinitionPath parameter is $homeAppDataLocalWindowsPowerShellScheduledJob
.
This parameter was introduced in Windows PowerShell 3.0.
Type: | String |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InitializationScript
Specifies commands that run before the job starts. Enclose the commands in braces ( { } ) to create a script block.
Use this parameter to prepare the session in which the job runs. For example, you can use it to add functions, snap-ins, and modules to the session.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifies input to the command. Enter a variable that contains the objects, or type a command or expression that generates the objects.
In the value of the ScriptBlock parameter, use the $Input automatic variable to represent the input objects.
Type: | PSObject |
Position: | Named |
Default value: | None |
Accept pipeline input: | True (ByValue) |
Accept wildcard characters: | False |
-Name
Specifies a friendly name for the new job. You can use the name to identify the job to other job cmdlets, such as the Stop-Job cmdlet.
The default friendly name is Job#, where # is an ordinal number that is incremented for each job.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True (ByPropertyName) |
Accept wildcard characters: | False |
-PSVersion
Specifies a version. This cmdlet runs the job with the version of Windows PowerShell. The acceptable values for this parameter are: 2.0 and 3.0.
This parameter was introduced in Windows PowerShell 3.0.
Type: | Version |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAs32
Indicates that this cmdlet runs the job in a 32-bit process. Use this parameter to force the job to run in a 32-bit process on a 64-bit operating system.
On 64-bit versions of Windows 7 and Windows Server 2008 R2, when the Start-Job command includes the RunAs32 parameter, you cannot use the Credential parameter to specify the credentials of another user.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Type
Specifies the custom type for jobs that this cmdlet starts. Enter a custom job type name, such as PSScheduledJob for scheduled jobs or PSWorkflowJob for workflows jobs. This parameter is not valid for standard background jobs.
This parameter was introduced in Windows PowerShell 3.0.
Type: | String |
Position: | 2 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
System.String
You can pipe an object that has the Name property to the Name parameter. For example, you can pipe a FileInfo object from Get-ChildItem to Start-Job.
Outputs
System.Management.Automation.PSRemotingJob
This cmdlet returns an object that represents the job that it started.
Notes
- To run in the background, Start-Job runs in its own session in the current session. When you use the Invoke-Command cmdlet to run a Start-Job command in a session on a remote computer, Start-Job runs in a session in the remote session.
*
- Get-Job
- Invoke-Command
- Receive-Job
- Remove-Job
- Resume-Job
- Stop-Job
- Suspend-Job
- Wait-Job
docs.microsoft.com#############################################################################################################
#
# Veeam
#
# Author: Andreas Neufert - Senior Systems Engineer Central EMEA (Germany)
#
# August 2012
#
# Version 1.04
#
# ./ultimatestartjobscript.ps1
#
# Compatibility tested with B&R V6.1
#
# !!! Attention please run the job you will use with this script at minimum once manually !!!!
#
################################################################################################################
#############################################################################################################
#Manual Input (With input validation). This values can also be set by an external script.
$Job = "yourjobname" #this is the job name
$maxtimeinminutes = "999" #amount of time in minute till the script was canceled (but not the job). Can be helpful if you want to do some actions if job didn´t finish in a specified time.
############################################################################################################
# Script# Optical only - Empty lines to see every code in the powershellwindow (jump under Powershellprozessing bar)
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "
Write-host ". "#Set Starttimes
$StartTimecalc = get-date
$StartTime = get-date -format u
write-host $StartTime "Information: Start time:" $StartTime# Load the Veeam Powershell snapin
Add-PSSnapin -Name VeeamPSSnapIn -ErrorAction SilentlyContinue
$ActualDate = get-date -format u
write-host $ActualDate "Information: Loading Veeam Powershell plugin"#Reset Error Counter
$Resultcounter = 0
$error.clear()
$ActualDate = get-date -format u
write-host $ActualDate "Information: Error counter reseted"#Check if Server is a Veeam backupserver
$BackupServer = Get-VBRlocalhost
IF ($BackupServer -eq $NULL)
{
$resultcounter++
$ActualDate = get-date -format u
write-host $ActualDate "Error: There is an issue with the local Veeam Backup instance or this server is no Veeam Backup & Replication server"
}
ELSE
{ #Point001
$ActualDate = get-date -format u
write-host $ActualDate "Information: Local Server is a Veeam Backup & Replication Server"#Load Job Object
$JobObject = Get-VBRJob -Name $Job
$ActualDate = get-date -format u
write-host $ActualDate "Information: Loading Job Object for" $Job#Check if Job exists
If ($JobObject -eq $Null){
$resultcounter++
$ActualDate = get-date -format u
write-host $ActualDate "Error: Job " $Job " does not exist"
}ELSE{ #Point002
$ActualDate = get-date -format u
write-host $ActualDate "Information: Jobname " $Job " was accepted"#Check if Job still running
$1 = Get-VBRJob -name $Job
If ($1.Info.LatestStatus -ne "None") {#Point002a# §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
# §§§§§§§ Start loops §§§§§§§§§§§§§#Do Loop for Restart Job if Job Failed
Do{ #Point004
#Start Job (Backup/Replication)
Start-VBRJob $Jobobject –runasync
# With -runasync Powershell didn´t wait till job is finished and process the script imediately after sending the command to Veeam.#Check if Start-VBRJob produced an Powershell error
If ($error.count -ge 1) {
$ActualDate = get-date -format u
write-host $ActualDate "Error: Job can not be startet or other powershell error"
}ELSE{ #Point003
$ActualDate = get-date -format u
write-host $ActualDate "Information: Job " $Job " started"#Wait for Interface actualization
wait-event -timeout 15#Now we have to check if there are problems with the job or the max run time is over.#Check if Job still runs and post actual status every 30 seconds
Do{
wait-event -timeout 30
$1 = Get-VBRJob -name $Job
$ActualDate = get-date -format u
write-host $ActualDate "Information: Job " $Job " is running. Please wait..."
#Check if max time reached
$3 = ($StartTimecalc).AddMinutes($maxtimeinminutes)
$4 = get-date
$2 = "0"
If ($3 -le $4){
$2="timeisover"
$ActualDate = get-date -format u
write-host $ActualDate "Error: Max Time reached"
$resultcounter++
} ELSE {
$ActualDate = get-date -format u
write-host $ActualDate "Information: Max Time not reached"
}
} Until($1.Info.LatestStatus -ne "None" -or $2 -eq "timeisover")
$ActualDate = get-date -format u
write-host $ActualDate "Information: Job finished with result "$1.Info.LatestStatus
} #EndPoint003} #EndPoint004
Until($1.Info.LatestStatus -eq "Failed" -or $1.Info.LatestStatus -eq "Success" -or $1.Info.LatestStatus -eq "Warning" -or $2 -eq "timeisover" )# §§§§§§§ End loops §§§§§§§§§§§§§
# §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§#EndPoint002a
}ELSE{
$resultcounter++
$ActualDate = get-date -format u
write-host $ActualDate "Error: Job " $Job " already running or job was never started (please run job at minimum once manually before you are able to use that script)."
}
} #EndPoint002
} #EndPoint001# If job failed, display a error message and increase error result counter
If ($1.Info.LatestStatus -eq "Failed"){
$resultcounter++
$ActualDate = get-date -format u
write-host $ActualDate "Error: " $Job " Job finished with an error"
} ELSE {}# §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ Results §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
# §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ Results §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
# §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ Results §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§$Resultcounterend = $Resultcounter + $error.count#Results
IF ($Resultcounterend -lt 1)
{
IF ($1.Info.LatestStatus -eq "Success"){
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
$ActualDate = get-date -format u
Write-host $ActualDate "Information: Script started at " $StartTime
Write-host $ActualDate "Information: Script finished at " $ActualDate
Write-host $ActualDate "Information: Started Job: " $Job
write-host $ActualDate "Information: Job finished successfully"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
} ELSE {
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
$ActualDate = get-date -format u
Write-host $ActualDate "Information: Script started at " $StartTime
Write-host $ActualDate "Information: Script finished at " $ActualDate
Write-host $ActualDate "Information: Started Job: " $Job
write-host $ActualDate "Warning: Job finished with a warning"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
}
}
ELSE
{
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
$ActualDate = get-date -format u
Write-host $ActualDate "Information: Script started at " $StartTime
Write-host $ActualDate "Information: Script finished at " $ActualDate
Write-host $ActualDate "Information: ERROR ERROR ERROR ERROR ERROR ERROR ERROR"
Write-host $ActualDate "Error: There are " $Resultcounterend "errors"
Write-host $ActualDate "Error: Job finished with errors"
Write-host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
}
#End
forums.veeam.com
If you just got a new job, congratulations! This is a tough market, so getting a job is definitely an achievement. Now another type of work begins. The first 90 days on the job is critical to building a strong foundation for success at your new company. You may say, what do you mean? I know how to work. I would say I am sure you do but starting a new job involves more than just hard work.
Starting a new job also needs to include implementing a jump-start plan that helps shape key people’s first impression of you. First impression is key because once they have that impression (either positive or negative), it will become your reputation. That reputation is hard to change unless you do something drastic later on. Here are six tips on how build a great reputation in the first 90 days of a starting a new job.
- Determine what kind of reputation you want to build: Ask yourself what you should be known for? What qualities are the most critical for success in this job? For example, a Director should try to build a reputation that includes ability to think strategically, get results, facilitate cross functional communication, etc…; an Analyst should try to build a reputation for learning quickly, having always a positive attitude, is detailed oriented, etc…
- Know who are the “key people” in this company that should have a good impression of you. Obviously this includes your boss, but there are many more. For a Director of Marketing of a small company for example, it would be the Chief Marketing Officer, all peers that are cross functional leads in sales, technology, product management, website, plus perhaps the other C level executives as well. For an Analyst, it will be your boss + perhaps anyone you have to interact with frequently to get your job done + even your peers, especially ones that already have a good reputation. They may also have your boss’ ear (meaning your boss may ask for their opinion of you).
- Spot situations in your job that builds your reputation: In the first 90 days of starting a new job, whatever you need to deliver for your job, hit it out of the park even if you have to work extra hours. On top of that, spot opportunities to help before you are asked. For a Director, most likely you would need to come up with an assessment of the current situation and plans on how to improve. Why not propose it to your boss and let him/her know when you can deliver that? You will come across as taking initiative and have a chance to demonstrate how strategic you are. For an Analyst level, proactively update your boss on your progress and set up meetings to get support if needed. You will make his job easier and every manager loves a self-sufficient team member.
- Connect with “key people” – schedule “meet and greet” (lunch, coffee break, short meetings) with each person separately so they know who you are. Figure out whether there is a need to do a regular meeting with them depending on their preference and your job. Everyone appreciates a proactive person. Once you did achieve something (e.g. created a plan), you can copy these “key people” to get their feedback. It’s a subtle way to involve them and build a good reputation for yourself. Also socialize – go out to lunch and happy hours with co-workers and “key people.” If someone likes you personally, it’s easier to build a good reputation for your work as well.
- Get to know your bosses working style – as important as it is to build a good reputation with all “key people” when starting a new job, your boss is probably still the most important as he/she controls much of your promotion, evaluation, etc.. It pays to figure out quickly his style – what works, what doesn’t work, pet peeves. It’s even ok to initiate a meeting to discuss this for half an hour and ask him how he likes to work with you. Again you are making it easy for him and that is always a good thing.
- Spend time to get up to speed with all the context: This means not only understand your role and what you need to do, but also understand key histories of decisions and any related information or departments that affect your job. Ask lots of questions. A new person gets a lot of leeway to ask questions in the first few months. So go ahead and ask. It’s better than assuming any day.
Obviously, I don’t mean that you can slack off after the first 90 days of starting a new job, but once you build a good reputation, you just created some room for yourself to protect against any mistakes you may make in the future. I hope these simple but critical tips will help you jump-start your job success. I look forward to your comments. I am always in your corner
– Lei
bemycareercoach.com